我想检查大海捞针是否以包含一些文字发生变化的针结束。
这是我尝试过的并且显示“sre_constants.error:没有什么要重复”错误:
import re
string = 'stuff ... </div> <img src="..." title"SOME_TEXT_THAT_CHANGES">'
pattern = r'/<\/div> <img src="..." title"(*.)">$/'
prog = re.compile(pattern)
result = prog.match(string)
print result
答案 0 :(得分:3)
应该是这样的:
>>> import re
>>> string = 'stuff ... </div> <img src="..." title"SOME_TEXT_THAT_CHANGES">'
>>> pattern = r'</div> <img src="..." title"(.*)">$'
>>> prog = re.compile(pattern)
>>> result = prog.search(string)
>>> result
<_sre.SRE_Match object at 0x0188A3A0>
>>> print result.group(1)
SOME_TEXT_THAT_CHANGES
>>>
现在让我回顾一下我所做的改变:
*.
更改为.*
所需的模式(导致错误的原因)。re.search
,其中搜索字符串中的模式,而不是re.match
,以查找完全匹配。/
。/
无需在</div>
答案 1 :(得分:2)
将正则表达式更改为:
r'<\/div> <img src="[.]{3}" title"(.*)">$'
.
在正则表达式中有特殊含义,因此您应该使用字符类或使用\
对其进行转义。
无需在Python中/ /
之间包含正则表达式。
*.
应为.*
。
re.match
仅匹配字符串的开头,因此最好使用re.search
。(re.search()
vs re.match()
)
<强>演示:强>
>>> pattern = r'<\/div> <img src="[.]{3}" title"(.*)">$'
>>> prog = re.compile(pattern)
>>> prog.search(string)
<_sre.SRE_Match object at 0xb5dcf920>