我正在编写有关 Python 的“高级”正则表达式的教程, 我无法理解
lastindex
属性。为什么在给定的示例中它始终为 1: http://docs.python.org/2/library/re.html#re.MatchObject.lastindex
我的意思是这个例子:
re.match('((ab))', 'ab').lastindex
为什么是1?第二组也匹配。
最佳答案
lastindex
是最后匹配的组的索引。文档中的示例包括使用 2 个捕获组的示例:
(a)(b)
其中 lastindex
设置为 2,因为最后一个匹配的捕获组是 (b)
。
当您有可选的捕获组时,该属性会派上用场;比较:
>>> re.match('(required)( optional)?', 'required').lastindex
1
>>> re.match('(required)( optional)?', 'required optional').lastindex
2
当您有嵌套组时,外部组是最后一个匹配的。因此,使用 ((ab))
或 ((a)(b))
时,外部组是组 1,也是最后一个匹配的组。
关于python - Python 中的 RE - lastindex 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22489243/