pythonパターンを複数回使用するためのフラグまたは特別なキーがあります。私はテストに使用しました http://gskinner.com/RegExr/ my RegExp、それしかし、正しい環境でのテストでは、Noneのみが返されます。
import re
pattern = r"(?P<date>--\d\d-\w+:\d\d)[ \t]+(?P<user>\w+)[ \t]+(?P<method>[\w ]+)[\" ]* (?P<file>[\w\\:\.]+)@@(?P<version>[\w\\]+)[\" ]*(?P<labels>[\(\w, \.\)]+){0,1}[\s \"]*(?P<comment>[\w \.-]+){0,1}[\"]"
base = """
--02-21T11:22 user3 create version "W:\foo\bar\fooz.bat@@\main\1" (label1, label2, label3, label22, label33, ...)
"merge in new bat-based fooz installer"
--02-21T11:22 user1 create version "W:\foo\bar\fooz.bat@@\main\0"
--02-21T11:22 user2 create branch "W:\foo\bar\fooz.bat@@\main\"
"merge in new bat-based fooz installer"
--02-13T11:22 user1 create version "W:\foo\bar\fooz.bat@@\main\1"
"Made to use new fooz.bat"
"""
r = re.match(pattern, base)
print(r)
re.match
は、文字列の先頭のパターンに一致しようとします。あなたは探している re.search
、re.findall
またはre.finditer
Python正規表現マッチング関数はそれぞれ、さまざまな目的に役立ちます。
re.match
は常に文字列の先頭から始まります。
re.search
は、最初から一致する文字列を最初から検索します。一致が見つかると停止します。
re.findall
は、一致するすべての検索のリストを返します。
上記のすべてのケースで、正規表現パターンにグループがある場合、返される項目は、完全一致のタプルであり、その後に各グループ一致が正規表現パターンに出現する順序で続きます。