我正在从像 PyPDF2 这样的库的输出中提取文本段落,然后是像“观察#1”或“观察#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; 请为此实例提供适当的正则表达式,
1 回答

慕桂英3389331
TA贡献2036条经验 获得超8个赞
如果应该有大写字母并且单词可以包含 a '
,则可以使用字符类,您可以在其中列出允许的字符和正向前瞻。
然后,您可以捕获这些大写单词之间的内容,并使用正向前瞻来检查后面是否是另一个大写单词后跟#
1+ 数字或字符串的结尾。此正则表达式利用re.DOTALL
点与换行符匹配的位置。
(?=[A-Z']*[A-Z])[A-Z']+\s+#\d+(.*?(?=[A-Z']*[A-Z][A-Z']*\s+#\d+|$))
解释
(?=[A-Z']*[A-Z])
肯定前瞻来断言至少一个字符 AZ 后面的内容,其中 a'
可以在之前出现[A-Z']+\s+#\d+
匹配 1+ 次 AZ 或 '、1+ 空格字符和 1+ 数字(
捕获组[A-Z']*[A-Z][A-Z']*
匹配大写字符 AZ,其中 a'
可以在前后\s+#\d+
匹配 1+ 个空格字符、# 和 1+ 个数字或字符串的结尾.*?
匹配任何字符(?=
断言以下内容的正向预测是)
关闭非捕获组)
关闭捕获组
添加回答
举报
0/150
提交
取消