>>> text = 'how much are you pledging to spend on education?!'
>>> needle = 'education?!'
>>> start = text.index(needle)
>>> end = start + len(needle)
>>> start, end
(38, 49)
>>> text = 'how much are you pledging to spend on education?!'
>>> pat=re.escape(r'education?!')
>>> pat
'education\\?\\!'
>>> p=re.compile(pat)
>>> p.search(text)
<_sre.SRE_Match object; span=(38, 49), match='education?!'>
?
是regex中的一个特殊字符,意思是“可选地匹配前面的规则”。在本例中,它可以选择匹配“n”,这很好,但是下一个字符应该是“!”。在相反,请避开“?”在正则表达式中。现在匹配“?”而不是扮演一个特殊的角色。在
docs on the ^{} module 解释了这一点。在
既然您似乎不了解正则表达式,因此不太可能真正想要/需要它们,我可以建议您这样做吗?在
但我真正想知道的是你为什么要开始和结束索引。例如,如果您希望它们替换子字符串,有一种更好的方法:
^{pr2}$如果您有想要逐字匹配的元字符,您应该使用re.escape来帮助您通过在所有非字母数字前面加一个
\
来对它们进行转义:这允许您转义未知元字符:
^{pr2}$关于python3.4re上的backslash plague有一个很好的讨论HOWTO
根据评论:
相关问题 更多 >
编程相关推荐