我有这个,没有匹配,为什么?:
>>> p = r'abc'
>>> cp = re.compile(p, re.IGNORECASE)
>>> m = cp.search('ABC', re.IGNORECASE)
>>> m # NO MATCH # 1
但是,这给了一个匹配,为什么?
>>> m = cp.search(' ABC', re.IGNORECASE) # introduced spaces, ABC no longer at the beginning
>>> m # MATCH # 2
<_sre.SRE_Match object at 0x1082b5ac0>
要获得#1中的匹配,我所要做的就是删除re.IGNORECASE,为什么会这样?
>>> m = cp.search('ABC')
>>> m
<_sre.SRE_Match object at 0x10827e308>
答案 0 :(得分:1)
如果(在解释器中)你打印出关于cp.search的帮助:
help(cp.search)
你会看到:
Help on built-in function search:
search(string=None, pos=0, endpos=9223372036854775807, *, pattern=None) method of _sre.SRE_Pattern instance
Scan through string looking for a match, and return a corresponding match object instance.
Return None if no position in the string matches.
请注意,此函数不带任何标志,但实际上您将标志传递给'pos'参数,这就是您获得意外结果的原因。