字符串的正则表达式包含 if 字符全部大写 python

Regular Expression for a string contains if characters all in capital python

我正在从 PyPDF2 等库的输出中提取文本段落,后跟 "OBSERVATION #1" 或 "OBSERVATION #2" 等文本。
但是会有一些错误所以它可能像 "OBSERVA'TION #2" 我必须避免像 "Suite #300" 所以规则是 "IF THERE IS CHARACTER, IT WOULD BE IN CAPITAL".
当前 python 代码片段如

inspection_observation=pdfFile.getPage(z).extractText()
                if 'OBSERVATION' in inspection_observation:
                    for finding in re.findall(r"[OBSERVATION] #\d+(.*?) OBSERVA'TION #\d?", inspection_observation, re.DOTALL):

                    #print inspection_observation;
                        print finding; 

请告知此实例的适当正则表达式,

如果应该有一个大写字母并且单词可以包含 ',您可以使用 character class,您可以在其中列出允许的字符和正面前瞻。

然后你可以捕获那些大写单词之间的内容,并使用正向前看来检查后面是否是另一个大写单词后跟 # 和 1+ 数字或字符串的结尾。此正则表达式使用 re.DOTALL,其中点与换行符匹配。

(?=[A-Z']*[A-Z])[A-Z']+\s+#\d+(.*?(?=[A-Z']*[A-Z][A-Z']*\s+#\d+|$))

说明

  • (?=[A-Z']*[A-Z]) 肯定前瞻断言至少一个字符 A-Z 之后的内容,其中 ' 可以出现在
  • 之前
  • [A-Z']+\s+#\d+ 匹配 1+ 次 A-Z 或 ', 1+ 空白字符和 1+ 数字
  • ( 捕获组
    • .*?匹配任意字符
    • (?= 肯定前瞻断言接下来是
      • [A-Z']*[A-Z][A-Z']* 匹配大写字符 A-Z,其中 ' 可以在
      • 之前和之后
      • \s+#\d+ 匹配 1+ 个空白字符、# 和 1+ 个数字或字符串结尾
    • )关闭非捕获组
  • ) 关闭捕获组

Regex demo