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

2024-05-14 23:11:50 发布

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

我正在从PyPDF2库的输出中提取文本段落,后跟“OBSERVATION#1”或“OBSERVATION#2”之类的文本。
但是会有一些错误,所以它可能像“观察2”,我必须避免像“组曲300”,所以规则是“如果有字符,它将是大写的”。
当前的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; 

请为这个实例提供适当的正则表达式


Tags: 代码in文本re规则错误字符段落
1条回答
网友
1楼 · 发布于 2024-05-14 23:11:50

如果应该有大写字母,并且单词可以包含',那么可以使用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

相关问题 更多 >

    热门问题