正規表現構文を使用してすべてのグループを直接置き換える方法はありますか?
通常の方法:
re.match(r"(?:aaa)(_bbb)", string1).group(1)
しかし、私はこのような何かを達成したい:
re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)")
Regexがキャプチャしたグループから即座に新しい文字列を作成したいと思います。
_re.sub
_ を見てください:
_result = re.sub(r"(\d.*?)\s(\d.*?)", r"\1 \2", string1)
_
これはPythonの正規表現置換(置換)関数です。置換文字列には、グループと一致したもので置換されるいわゆる後方参照(バックスラッシュ、グループ番号)を入力できます。グループは、group(...)
関数と同じようにカウントされます。つまり、1
_から始まり、左から右へ、括弧が開きます。
受け入れられた答えは完璧です。この構文を使用することで、グループ参照がおそらくより良く達成されると付け加えます。
r"\g<1> \g<2>"
置換文字列用。これにより、グループの後に数字が続く場合の構文の制限を回避できます。繰り返しますが、これはすべてドキュメントに存在し、新しいものは何もありません。