import re
look = r'Template.11_31.Single-Volume'
pattern = r'11.31'
match = re.search(pattern,look)
print re.findall(pattern,look)
if (match is not None):
print match.group(0)
答案:
['11_31']
11_31
我希望它与11.31
或1131
匹配,但在这里它也匹配11_31
答案 0 :(得分:5)
问题在于你的正则表达式11.31
点匹配任何字符。
您可以使用此正则表达式:
pattern = r'11\.?31'
这将匹配11.31
或1131
但不匹配11_31
或11:31
,因为\.
与文字点匹配,\.?
使点可选匹配。
示例:强>
>>> print re.findall(pattern, "Template.11.31.Single-Volume-1131-something")
['11.31', '1131']
答案 1 :(得分:3)
pattern =r'11.31'
此处.
可以匹配任何内容,因此它也会匹配_
中的11_31
。要么将其转义(\.
)或将其放入字符类([.]
)并在需要时添加更多内容。
使用此
pattern =r'11[.]?31'
参见演示。