我有一个执行以下操作的正则表达式:
我的正则表达式捕获所需的模式,但当存在相邻的多大写单词时,会返回多种重叠匹配,如下面的AA-BB-DD。请帮助我调整我的正则表达式,使其按需要工作。
这是我的代码草案:
str1 = 'z z z z z11 AA BB DD f f d e gd df sdf ggf we AA ff d f f'
re.findall(r'(?=(\s(?:[^\s]+[\s]+){5}(?:[^A-Z\s]*[A-Z][A-Z]+(?:[^\s]+[\s]+){1,3}?)*?[^A-Z\s]*[A-Z][A-Z]+.*?(?:[\s]+[^\s]+){3}\s))', str1)
实际产出:
Match 1 - 'z z z z z11 AA BB DD f'
Match 2 - 'z z z z11 AA BB DD f f'
Match 3 - 'z z z11 AA BB DD f f d'
Match 4 - 'gd df sdf ggf we AA ff d f'
期望输出:
Match 1 - 'z z z z z11 AA BB DD f f d'
Match 2 - 'gd df sdf ggf we AA ff d f'
试试这个:
>>> pattern = r'(?:[a-z\d]+\s*){0,5}(?:[A-Z]+)(?:\s*[A-Z]+)*(?:\s*[a-z]+){0,3}'
>>> re.findall(pattern, str1)
['z z z z z11 AA BB DD f f d', 'gd df sdf ggf we AA ff d f']