首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最后$是怎么出现的?

最后$是怎么出现的?
EN

Stack Overflow用户
提问于 2016-12-20 04:37:19
回答 1查看 79关注 0票数 1

我正在尝试理解使用RegexObjectposendposslice

我的守则如下:

代码语言:javascript
复制
>>> 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)中切片

$ 如何出现在端点位置?

EN

回答 1

Stack Overflow用户

发布于 2016-12-20 04:55:00

match方法文档

可选pos和endpos参数的含义与search()方法相同。

请参考方法,其中说

可选参数endpos限制了字符串的搜索范围;就好像字符串是长的,所以只有从pos到endpos - 1的字符才会被搜索到匹配。如果endpos小于pos,则找不到匹配;否则,如果rx.search(string, 0, 50) rx rx.search(string[:50], 0).是已编译的正则表达式对象,则 rx 等效于。

提供4的endpos相当于将字符串切片为4,因此endpos被认为是字符串的新末端,$在那里匹配。这与pos^之间的交互形成了奇怪的对比,后者显然不是这样工作的:

'^'模式字符在字符串的真正开头和换行符之后的位置匹配,但不一定在搜索要开始的索引处匹配。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41234980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档