使用正则表达式检查字符串是否以某些内容结尾

时间:2013-11-07 19:01:42

标签: python regex

我想检查大海捞针是否以包含一些文字发生变化的针结束。

这是我尝试过的并且显示“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

2 个答案:

答案 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
>>>

现在让我回顾一下我所做的改变:

  1. *.更改为.*所需的模式(导致错误的原因)。
  2. 您需要在此处使用re.search,其中搜索字符串中的模式,而不是re.match,以查找完全匹配。
  3. Python Regexes的开头和结尾不需要/
  4. /无需在</div>
  5. 中进行转义

答案 1 :(得分:2)

将正则表达式更改为:

r'<\/div> <img src="[.]{3}" title"(.*)">$'
  1. .在正则表达式中有特殊含义,因此您应该使用字符类或使用\对其进行转义。

  2. 无需在Python中/ /之间包含正则表达式。

  3. *.应为.*

  4. re.match仅匹配字符串的开头,因此最好使用re.search。(re.search() vs re.match()

  5. <强>演示:

    >>> pattern = r'<\/div> <img src="[.]{3}" title"(.*)">$'
    >>> prog = re.compile(pattern)
    >>> prog.search(string)
    <_sre.SRE_Match object at 0xb5dcf920>