拉出正则表达式的一部分(Python)

时间:2018-03-11 00:46:12

标签: python regex

说我有以下正则表达式并搜索

e = r"(?P<int>\d+)|(?P<alpha_num>\w)"
num = re.search(e, "123z")
letter = re.search(e, "z123")

我知道num.group("int")提供123num.group("alpha_num")提供None。 同样letter.group("int")Noneletter.group("alpha_num")z

但是,我想要的是获得任意匹配的“命名类别”的方法。 所以,如果我有任意匹配,比如说new_match,我可以调用new_match.named_category(),它会返回“int”或“alpha_num”,具体取决于匹配方式。

是否存在任何此类命令或是否必须创建自己的命令?

谢谢!

1 个答案:

答案 0 :(得分:1)

对于问题中的具体示例,您可以使用lastgroup

>>> import re
>>> e = r"(?P<int>\d+)|(?P<alpha_num>\w)"
>>> num = re.search(e, "123z")
>>> letter = re.search(e, "z123")
>>> num.lastgroup
'int'
>>> letter.lastgroup
'alpha_num'