Python RegExp全局标志

问题描述 投票:19回答:2

python中是否有一个标志或某些特殊键可以多次使用模式。我曾经测试过我的RegExp http://gskinner.com/RegExr/,它在其中正常工作。但是,在正确的环境匹配中进行测试时,仅返回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)
python regex global flags
2个回答
40
投票

re.match尝试匹配字符串开头的模式。您正在寻找re.searchre.findallre.finditer


0
投票

每个Python正则表达式匹配函数都可用于不同目的。

re.match总是从字符串的开头开始。

re.search从头开始遍历字符串,以查找第一个匹配项。找到匹配项时它将停止。

re.findall返回所有搜索匹配项的列表。

[在上述所有情况下,如果正则表达式模式中有一个组,那么您返回的项目是完全匹配的元组,然后按照它们在正则表达式模式中出现的顺序排列每个组匹配。

© www.soinside.com 2019 - 2024. All rights reserved.