3

私はPython 2.7.0を使用しており、インタープリターで次のことを行っています:

>>> re.search (r"//\s*.*?$", "//\n\na12345678", flags=re.MULTILINE|re.DOTALL).group()
'//\n\na12345678'

これは私が期待したものではありません。$ は最終行の前に一致すると思いましたが、その後に2つの最終行文字とテキストが含まれていましたか?

驚くべきことに、これは機能します:

>>> re.search (r"//\s*.*?$", "//1\n\na12345678", flags=re.MULTILINE|re.DOTALL).group()
'//1'

Python の正規表現について、ここで誤解していることは何ですか?

いくつかの詳細情報:

>>> re.search(r"//\s*.*", "//\n  test").group()
'//\n  test'
>>> re.search(r"//\s*.*", "//1\n  test").group()
'//1'

このコードの最後のブロックには、MUTLILINE と DOTALL がありません。ここで私は何を誤解していますか?.* は改行に一致するべきではなく、間違いなく改行を超えてはなりませんよね?

4

1 に答える 1