我正在尝试理解使用RegexObject的pos、endpos和slice。
我的守则如下:
>>> import re
>>> pat=re.compile(r'^abcd')
# Starting search from index 2.
>>> print(pat.match('..abcd',2))
None
# Slicing gives a new string "abcd" hence a match for ^ is found.
>>> pat.match('..abcd'[2:])
<_sre.SRE_Match object; span=(0, 4), match='abcd'>
>>> pat=re.compile(r'abcd$')
# How does $ appear at end ?
>>> pat.match('abcd..',0,4)
<_sre.SRE_Match object; span=(0, 4), match='abcd'>
# Slicing gives a new string "abcd" hence a match for ^ is found.
>>> pat.match('abcd..'[:4])
<_sre.SRE_Match object; span=(0, 4), match='abcd'>我的问题是:由于字符串abcd..没有在>>> pat.match('abcd..',0,4)中切片
$ 如何出现在端点位置?
发布于 2016-12-20 04:55:00
match方法文档
可选pos和endpos参数的含义与
search()方法相同。
请参考方法,其中说
可选参数endpos限制了字符串的搜索范围;就好像字符串是长的,所以只有从pos到
endpos - 1的字符才会被搜索到匹配。如果endpos小于pos,则找不到匹配;否则,如果rx.search(string, 0, 50)rxrx.search(string[:50], 0).是已编译的正则表达式对象,则 rx 等效于。
提供4的endpos相当于将字符串切片为4,因此endpos被认为是字符串的新末端,$在那里匹配。这与pos和^之间的交互形成了奇怪的对比,后者显然不是这样工作的:
'^'模式字符在字符串的真正开头和换行符之后的位置匹配,但不一定在搜索要开始的索引处匹配。
https://stackoverflow.com/questions/41234980
复制相似问题