python 正则表达式:获取命名组名称

6 投票
1 回答
2149 浏览
提问于 2025-04-18 05:54

我有这样的代码:

$ pattern = re.compile('(?P<group1>AAA|BBB|CCC)|(?P<group2>DDD|EEE|FFF)')

当我查看一个匹配对象时,其实我并不关心具体匹配了哪个文本,我只想知道是group1还是group2。

groupdict()会给我类似这样的结果:

$ match.groupdict()
$ {'group1': None, 'group2': 'DDD'}

当然,我可以通过遍历这个字典来找出是group2,但如果我有很多匹配需要检查,这样做似乎太慢了。

有没有更直接的方法来获取组名呢?(Python 2.7)

1 个回答

11

也许可以看看 lastgroup 呢?

>>> pattern = re.compile('(?P<group1>AAA|BBB|CCC)|(?P<group2>DDD|EEE|FFF)')
>>> m = pattern.search("AAA")
>>> m.lastgroup
'group1'
>>> m = pattern.search("DDD")
>>> m.lastgroup
'group2'

撰写回答