68

Pythonのドキュメントによると:

re.MULTILINE:指定すると、パターン文字「^」は文字列の先頭と各行の先頭(各改行の直後)で一致します...デフォルトでは、「^」は文字列の先頭でのみ一致します..。。

では、次の予期しない結果が発生するとどうなりますか?

>>> import re
>>> s = """// The quick brown fox.
... // Jumped over the lazy dog."""
>>> re.sub('^//', '', s, re.MULTILINE)
' The quick brown fox.\n// Jumped over the lazy dog.'
4

3 に答える 3

141

の定義を見てくださいre.sub

re.sub(pattern, repl, string[, count, flags])

4番目の引数はカウントですre.MULTILINE。フラグとしてではなく、カウントとして(8)を使用しています。

名前付き引数を使用します。

re.sub('^//', '', s, flags=re.MULTILINE)

または、最初に正規表現をコンパイルします。

re.sub(re.compile('^//', re.MULTILINE), '', s)
于 2008-09-03T21:08:02.767 に答える
12
re.sub('(?m)^//', '', s)
于 2010-03-25T16:10:45.187 に答える
8

の完全な定義re.subは次のとおりです。

re.sub(pattern, repl, string[, count, flags])

flagsつまり、Python にパラメーターを指定すると、 を渡さずに渡すことができますcount

re.sub('^//', '', s, flags=re.MULTILINE)

または、より簡潔に:

re.sub('^//', '', s, flags=re.M)
于 2011-08-30T18:33:24.740 に答える