webdevqa.jp.net

正規表現とOR演算子はPythonでグループ化していませんか?

以下がその例です。ログファイルで次のパターンを探しています。

すべての文字列はAB_NまたはCDE_Nの形式です。 ABCDEは固定文字で、その後に下線が続きます。 Nは、2または3の数値です。

(AB|CDE)_\d{2,3}を試しましたが、グループが返されます。 ABまたはCDEである必要があり、ACまたはFEGではないため、\w{2,3}\d{2,3}を実行できません。括弧を省略すると改行も行われます。解決策は簡単だと思いますが、pythonと正規表現は初めてなので、これを理解することはできません。

20
pedram

?:正規表現の括弧内にあると、キャプチャされません。そのようです: (?:AB|CDE)_\d{2,3}

ここのドキュメントを参照してください: http://docs.python.org/3/library/re.html それを通過する方法の3分の1について非キャプチャ構文。

39
mattmc3

非キャプチャグループの構文は(?:...)(?:AB|CDE)_\d{2,3}。これは他のすべてと一緒に 文書化 です。

3
BrenBarn