我有一个很大的关键字列表和它们所属的组。一些相同的关键字属于不同的组。我需要找到所有命名的组。
msg = 'ef'
tmp = re.compile(r'(?P<ABC>ab|ef)|(?P<EFG>cd|ef)')
res = [g.groupdict() for g in tmp.finditer(msg)]
字符串
第一个月
同时,我可以找到以下情况中的所有组:
msg = 'cd ab cd'
[{'ABC': None, 'EFG': 'cd'}, {'ABC': 'ab', 'EFG': None}, {'ABC': None, 'EFG': 'cd'}]
的数据
但我没有找到所有的组。如果文本中有“ef”,我如何找到所有的组(“ABC”,“EFG”)?
2条答案
按热度按时间camsedfj1#
您可以使用lookarounds将相同的文本捕获到不同的组中:
字符串
尝试on regex101.com(请参阅 * 匹配信息 * 面板)。
考虑到这一点,编写一个脚本来生成这样的正则表达式应该是很简单的:
型
试试看:
型
2w2cym1i2#
一旦字符串的一部分被模式的一部分消耗,它将不会被重新考虑用于模式的不同部分。如果你需要找到所有的group-patterns,我们必须在外部使用iterate这个group-patterns:
字符串