小编bgu*_*t3r的帖子

使用re/search的开始/结束参数时,正则表达式中$和^之间的不一致性?

从我读过的,^应该匹配字符串的开头和$结束.然而,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)

python regex

36
推荐指数
3
解决办法
1932
查看次数

标签 统计

python ×1

regex ×1