我在notepad ++和python正则表达式测试网站上测试了模式,效果很好。但在python中它并不匹配。 regex.search 方法返回无。
文字:
Û Downloads : 20314 times
Û Language : English
Û Format : srt
Û Total : 1 subtitle file
模式:
^.{1,3}\s+(.*?):\s+(.*?)$
脚本:
with open('file.txt','r',encoding='utf-8') as f:
string = f.read()
print(string)
pattern = r'^.{1,3}\s+(.*?):\s+(.*?)$'
regex = re.compile(pattern)
match = regex.search(string,re.UNICODE|re.M)
print( 'Matching "%s"' % pattern)
print (' ', match.group())
print (' ', match.groupdict())
答案 0 :(得分:2)
您需要在re.compile()
函数中应用不在搜索中的标记:
>>> regex = re.compile(pattern,re.U|re.M)
>>> regex.search(st)
<_sre.SRE_Match object at 0x7f367951b2d8>
>>> regex.search(st).group()
u'\u251c\xa2 Downloads : 20314 times
如果您在re.search
中应用标记,它将返回None:
>>> regex = re.compile(pattern)
>>> regex.search(st,re.U|re.M).group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'