Python 与命名组关联的模式

Python 与命名组关联的模式,python,regex,Python,Regex,下面的代码给出了模式中使用的所有命名组 import re pattern = r"(?P<DEF_FUNC>def (?P<NAME_FUNC>\w+)\s*\((.*?)\):)|(?P<OTHERS>\w+)" regex = re.compile(pattern) for name in sorted( regex.groupindex, key = regex.groupindex.get ): print(name)

下面的代码给出了模式中使用的所有命名组

import re

pattern = r"(?P<DEF_FUNC>def (?P<NAME_FUNC>\w+)\s*\((.*?)\):)|(?P<OTHERS>\w+)"
regex   = re.compile(pattern)

for name in sorted(
    regex.groupindex,
    key = regex.groupindex.get
):
    print(name)
我想也有相应的模式,以便获得以下输出

DEF_FUNC
NAME_FUNC
OTHERS
DEF_FUNC  --> def (?P<NAME_FUNC>\w+)\s*\((.*?)\)
NAME_FUNC --> \w+
OTHERS    --> \w+
DEF\u FUNC-->DEF(?P\w+)\s*\(*?)
名称\u FUNC-->\w+
其他-->\w+

有没有一种不通过模式文本中的正则表达式搜索“在手边”实现的棘手方法

您可以检查sre_parse:

import re, sre_parse
pattern = r"(?P<DEF_FUNC>def (?P<NAME_FUNC>\w+)\s*\((.*?)\):)|(?P<OTHERS>\w+)"
v = sre_parse.parse(pattern)
print v.pattern.groupdict   # sub-pattern id of each group
#print v.dump()
print v.data  # find the subgroups and match the ids
import re,sre\u parse
模式=r“(?Pdef(?P\w+)\s*\(.*?):)|(?P\w+)”
v=sre_parse.parse(模式)
打印v.pattern.groupdict#每组的子模式id
#打印与转储()
打印v.data#找到子组并匹配ID

是否要将图案与结果一起打印?所以,我想你必须复制粘贴你的东西…问题是DEF_FUNC是由NAME_FUNC组成的,因此阻止了“欺骗”的方式…你好。我想知道与命名组关联的每个模式。在我的问题中,打印只是为了查看和测试结果。我希望有人能纠正我的错误,但我非常确定您需要编写一个函数来完成此操作:我没有看到任何内置功能可以实现您想要的功能。这看起来非常有趣!这似乎提供了所有的信息。我会玩的。这个
v.dump()
太棒了。那真的很有帮助。非常感谢你指出这一点。