猿问

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

我正在从像 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; 

请为此实例提供适当的正则表达式,


狐的传说
浏览 238回答 1
1回答

慕桂英3389331

如果应该有大写字母并且单词可以包含 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+ 个数字或字符串的结尾.*? 匹配任何字符(?= 断言以下内容的正向预测是) 关闭非捕获组) 关闭捕获组
随时随地看视频慕课网APP

相关分类

Python
我要回答