只是在寻找一些确认,但看起来正则表达式的索引/位置数字不遵循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。
如果有人能够证实我的假设并且可能解释为什么存在这种差异,我将非常感激。
答案 0 :(得分:2)
Python中的切片(span)是开放式的。因此"<HTML>and much more"[0:6]
实际上会返回"<HTML>"
。