2009-04-13 15 views
4

特に、複数行モードを有効にするパターン文字列に埋め込みオプションを指定できるかどうかを知りたいと思います。Python正規表現で組み込みオプションを使用できますか?

pattern = re.compile(r'foo', re.MULTILINE) 

私はパターン文字列でそれを指定するのではなく、re.MULTILINEオプションを使用して、複数行マッチングを取得する方法が欲しい:それは一般的に複数行モードは、次のように有効になっているPythonの正規表現で、です。埋め込み(?m)式でJavaでこれを行うことができます。例:

pattern = re.compile(r'(?m)foo') 

これはPythonでも可能ですか、re.Mオプションを使用する必要がありますか?そして、一般的には、Pythonの埋め込みパターンオプションについての良いリファレンスがありますか?

答えて

6

はい。 docsから

(?iLmsux)(iは集合からの1つの以上の文字、 'L'、 'M'、 'S'、 'U'、 'X'。 )

グループ は、空の文字列と一致します。対応するフラグを設定 文字:re.I は、(ケースを無視する)、re.L(ロケールに依存 )、re.M(多重線)、re.S (ドットが全て一致)、re.U(ユニコード依存 )、及びre.X(冗長) の正規表現全体。 ( フラグはModule Contentsで説明されている。)

あなたの代わりにcompile() 機能に フラグ引数を渡すので、 正規表現の一部としてフラグを含めるように を希望する場合に便利です。

フラグは、式がどのように解析されるかを変更することに注意してください。 式の文字列の最初に 、または 、または1つ以上の空白の後に の文字を使用する必要があります。 フラグの前に空白文字がない場合、結果は未定義です。

関連する問題