为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

狐的传说 2021-10-19 10:17:46
我正在从像 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+ 个数字或字符串的结尾

    • .*? 匹配任何字符

    • (?= 断言以下内容的正向预测是

    • ) 关闭非捕获组

    • ) 关闭捕获组


    查看完整回答
    反对 回复 2021-10-19
    • 1 回答
    • 0 关注
    • 237 浏览
    慕课专栏
    更多

    添加回答

    举报

    0/150
    提交
    取消
    微信客服

    购课补贴
    联系客服咨询优惠详情

    帮助反馈 APP下载

    慕课网APP
    您的移动学习伙伴

    公众号

    扫描二维码
    关注慕课网微信公众号