【发布时间】:2015-09-14 14:41:53
【问题描述】:
在 Python 中,您可以使用带有命名组的正则表达式,例如:
m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcolm Reynolds")
您可以按名称或使用groupdict 查找命名组的匹配文本:
In [202]: m.group("first_name")
Out[202]: 'Malcolm'
In [203]: m.groupdict()
Out[203]: {'first_name': 'Malcolm', 'last_name': 'Reynolds'}
如果我想要命名组的偏移量,我需要知道它们是哪个组号,所以我可以使用start(1) 之类的东西。如何找出命名组及其组号之间的映射?如果它们匹配相同的字符串,则无法明确推断。
这样做的目的是能够在对原始正则表达式没有特定知识的函数中推断出命名的带注释跨度(带有偏移量)。
【问题讨论】:
-
字典是无序的,所以这没有多大意义。你想达到什么目的?
-
组有偏移不是吗?如何找到命名组的偏移量?