让我们考虑稍后用于定义模式的字符串r"(?P<DEF_FUNC>def (?P<NAME_FUNC>\w+)\s*\((.*?)\):)|(?P<OTHERS>\w+)"
。
我想在这个字符串中找到用于从正则表达式的角度定义组的名称。此处,此名称为DEF_FUNC
,NAME_FUNC
和OTHERS
。
如何通过处理逃避问题来实现这一目标?
答案 0 :(得分:2)
您可以在groupindex
词典中找到它们(请参阅文档here):
>>> import re
>>> rstr = r"(?P<DEF_FUNC>def (?P<NAME_FUNC>\w+)\s*\((.*?)\):)|(?P<OTHERS>\w+)"
>>> regex = re.compile(rstr)
>>> regex.groupindex
{'DEF_FUNC': 1, 'OTHERS': 4, 'NAME_FUNC': 2}
如果你想按价值顺序执行常规技巧:
>>> sorted(regex.groupindex, key=regex.groupindex.get)
['DEF_FUNC', 'NAME_FUNC', 'OTHERS']