Python正则表达式捕捉多大写单词和相邻单词

2024-04-24 22:02:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个正则表达式,它执行以下操作:

  1. 找到一个有两个或更多相邻大写字母a-Z的单词(“多大写单词”)
  2. 如果可能,将匹配项向左和向右扩展到另一个多大写单词,只要每个多大写单词之间不超过三个非多大写单词;以及
  3. 将匹配项向左和向右扩展,以分别包含5个和3个非多大写单词的序列。你知道吗

我的正则表达式捕捉到所需的模式,但当有相邻的多大写单词时,会返回各种重叠的匹配,如下面的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'

Tags: dfmatch单词ddaaweffbb