从我读过的,^应该匹配字符串的开头和$结束.然而,re.search()看起来,行为^继续正常,而$"休息".例:
>>> a = re.compile( "^a" )
>>> print a.search( "cat", 1, 3 )
None
Run Code Online (Sandbox Code Playgroud)
这似乎对我来说'a'是正确的 - 即使它是在搜索的开始,也不在字符串的开头.
>>> a = re.compile( "a$" )
>>> print a.search( "cat", 0, 2 )
<_sre.SRE_Match object at 0x7f41df2334a8>
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎不对,或至少不一致.
re模块上的文档明确提到^由于开始/结束参数re.search而没有改变行为,但是$(我见过)没有提到行为的改变.
任何人都可以解释为什么事情是这样设计的,和/或建议一个方便的解决方法?
通过解决方法,我想编写一个始终匹配字符串结尾的正则表达式,即使有人使用结束参数re.search.
而为什么被re.search设计成:
s.search( string, endPos=len(string) - 1 )
Run Code Online (Sandbox Code Playgroud)
是相同的
s.search( string[:-1] )
Run Code Online (Sandbox Code Playgroud)
什么时候
s.search( string, startPos=1 ) …Run Code Online (Sandbox Code Playgroud)