私は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 がありません。ここで私は何を誤解していますか?.* は改行に一致するべきではなく、間違いなく改行を超えてはなりませんよね?