Python regex -检查模式是否包含捕获命名组

ztmd8pv5  于 2023-01-10  发布在  Python
关注(0)|答案(2)|浏览(141)

如何检查regex模式是否包含命名捕获组?我想根据regex的形式决定是使用re.findall还是re.finditer

mwngjboj

mwngjboj1#

使用以下方法:

pat = '.*(?P<word>\w+\d+\b).+'  # sample pattern
has_named_group = bool(re.search(r'\(\?P<\w+>[^)]+\)', pat))

这也可以是一个函数:

def has_named_group(pat):
    return bool(re.search(r'\(\?P<\w+>[^)]+\)', pat))
kiayqfof

kiayqfof2#

您可以使用Pattern.groupindex
一个字典,它把(?P)定义的任何符号组名Map到组号。如果模式中没有使用符号组,则字典为空。
例如

import re

pattern = re.compile('(?P<mygroup>.*)')

if pattern.groupindex:
    print("The pattern contains a named capturing group")
else:
    print("The pattern does not contain a named capturing group")

产出

The pattern contains a named capturing group

相关问题