Pythonの正規表現について少し混乱しています。具体的には、なぜ次の行はTrue
を返しますか?Python正規表現の改行エスケープ文字
コード:bool(re.search(r'ab\n^c$', 'ab\nc'))
Pythonの正規表現について少し混乱しています。具体的には、なぜ次の行はTrue
を返しますか?Python正規表現の改行エスケープ文字
コード:bool(re.search(r'ab\n^c$', 'ab\nc'))
$
は、文字列の末尾にマッチするので、c
は終わりである必要があります。ただし、一致する文字列はc$
で終わります。次に^
も含まれています。これは開始の文字列に一致しますが、式の途中に配置します。
どちらの脱出^
と$
ので、彼らはリテラルと一致、または^
試合re.MULTILINE
flagとテキストの各行の開始を行い、一致するテキストから^
と$
を削除します。
デモ:
>>> import re
>>> bool(re.search(r'ab\n\^c\$', 'ab\n^c$')) # escaped
True
>>> # multiline and target text adjusted
...
>>> bool(re.search(r'ab\n^c$', 'ab\nc', flags=re.MULTILINE))
True
'^'と '$'正規表現で特別な意味を持っています。私は正規表現についていくつかの研究をすることをお勧めします。 – TigerhawkT3