python中是否有标志或某些特殊键可以多次使用模式。 我以前测试http://gskinner.com/RegExr/我的RegExp,它在它中正常工作。 但是,当在正确的环境中进行测试匹配时,只返回无。
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)
答案 0 :(得分:33)
re.match
尝试匹配字符串开头的模式。
您正在寻找re.search
,re.findall
或re.finditer
答案 1 :(得分:5)
每个Python正则表达式匹配函数都可用于不同目的。
re.match
总是从字符串的开头开始。
re.search
从头开始逐步遍历字符串,以查找第一个匹配项。找到匹配项后它将停止。
re.findall
返回所有搜索匹配项的列表。
在上述所有情况下,如果正则表达式模式中有一个组,那么您返回的项目是完全匹配的元组,然后按照它们在正则表达式模式中出现的顺序排列每个组匹配。