私は好奇心、なぜだろう、次の出力が一致があったこと:なぜ w +が末尾の改行にマッチするのですか?
import re
foo = 'test\n'
match = re.search('^\w+$', foo)
if match == None:
print "It did not match"
else:
print "Match!"
改行がはい、文字列の末尾の前にいるのですか?これはなぜ一致しますか?
私は好奇心、なぜだろう、次の出力が一致があったこと:なぜ w +が末尾の改行にマッチするのですか?
import re
foo = 'test\n'
match = re.search('^\w+$', foo)
if match == None:
print "It did not match"
else:
print "Match!"
改行がはい、文字列の末尾の前にいるのですか?これはなぜ一致しますか?
^
および$
「開始文字列」および「終了文字列」ではなく、「行頭」および「行末」を意味します。 「文字列の開始」には\A
を使用し、「文字列の最後には\Z
」を使用してください。
Pythonでは "文字列の終わり"は '\ Z'です(Perlとは異なります。 '\ Z'と' \ z')。 – MRAB
@MRABよろしく!編集されました。 –
Pythonのre
ドキュメントから。
「$」
は、文字列の末尾の文字列または単に改行の前の終わりにマッチし、MULTILINEモードでも、改行の前にマッチします。 fooは 'foo'と 'foobar'の両方に一致し、正規表現foo $は 'foo'にのみ一致します。もっと興味深いことに、 'foo1 \ nfoo2 \ n'のfoo。$を検索すると、通常は 'foo2'と一致しますが、マルチラインモードでは 'foo1'と一致します。 'foo \ n'にある$の1つを検索すると、改行の直前に1つ、文字列の最後に2つ(空の)一致が見つかります。
'$' "は文字列の末尾に一致する文字列の末尾に一致します*" –