Python正则表达式索引号

时间:2016-08-26 14:38:41

标签: python regex

只是在寻找一些确认,但看起来正则表达式的索引/位置数字不遵循python其余部分使用的相同规则。

示例:

pattern=re.compile('<HTML>')
pattern.search("<HTML>")

输出:

<_sre.SRE_Match object; span=(0, 6), match='<HTML>'>

为什么“span =(0,6)”?

在python中,字符串"<HTML>"的长度只有6个字符,因此在尝试执行以下操作时会返回索引错误:

"<HTML>"[6]
File "<stdin>", line 1, in <module>
IndexError: string index out of range

所以我非常肯定答案是匹配对象的这个跨度值本身与python数据结构的索引值不同。虽然匹配对象的span值从第一个字符的0开始(与所有python数据结构一样),但最后一个字符始终是endpos-1。

如果有人能够证实我的假设并且可能解释为什么存在这种差异,我将非常感激。

1 个答案:

答案 0 :(得分:2)

Python中的切片(span)是开放式的。因此"<HTML>and much more"[0:6]实际上会返回"<HTML>"