首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与^,$匹配的re.match模式

与^,$匹配的re.match模式
EN

Stack Overflow用户
提问于 2018-09-28 05:52:12
回答 1查看 73关注 0票数 3

在以下守则中:

代码语言:javascript
复制
    >>> pattern = re.compile(r'^<HTML>')
    >>> pattern.match("<HTML>")
    <_sre.SRE_Match at 0x1043bc8b8>
    >>> pattern.match("⇢ ⇢ <HTML>", 2) # ⇢ stands for whitespace character.
    None

当我们使用^ metacharacter和匹配模式时,下面给出的开头的任何空格字符都不会给出匹配,即使

‘'pos’参数等于2,给出的原因是在这种情况下元字符^不能匹配(<位于位置2,不能与^匹配)。

代码语言:javascript
复制
>>> pattern = re.compile(r'<HTML>$')
>>> pattern.match("<HTML>⇢", 0,6) # ⇢ stands for whitespace character.
<_sre.SRE_Match object at 0x1007033d8>
>>> pattern.match("<HTML>⇢"[:6])
<_sre.SRE_Match object at 0x100703370>

但是,当我们在正则表达式的末尾使用$并给出' end‘参数时,是否有匹配呢?为什么会有区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 05:58:48

你得稍微钻研一下文档,但答案就在那里。您将在pattern.search的文档中找到以下信息,同样的描述也适用于pattern.match

可选的第二个参数pos在要开始搜索的字符串中提供一个索引;它默认为0。这并不完全等同于对字符串进行切片;模式字符在字符串的真正开头和在换行符()之后的位置匹配,但不一定在开始搜索的索引处匹配。

因此,这意味着SOL锚点^将与字符串的真正开头匹配(而不是pos指定的位置)。OTOH

可选参数endpos限制了字符串的搜索范围;如果字符串是endpos字符长,那么只有从pos endpos - 1 endpos - 1的字符才会被搜索到匹配。

强调我的。这意味着带有EOL锚^的模式实际上只匹配到endpos (与pos不同)。

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

https://stackoverflow.com/questions/52549120

复制
相关文章

相似问题

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