python - 需要修改我的正则表达式来捕捉本质上相同句子的不同表示
问题描述
好的,所以我正在解析 PDF 文件以仅获取“第 2 节”。我将向您展示我正在处理的 PDF 文件中的一些示例。
我需要抓住第 2 节中的所有内容(在两个图像之间)这是我的正则表达式(正在进行中)
re.findall('hazards*\sidentification(.*?)information\son\st*h*e*\s*ingredients', text, re.IGNORECASE)
注意:有时它是关于“the”成分的信息。
我尝试了不同的方法,例如使用“SECTION 2”和“SECTION 3”,但在某些文件中,它只是“2”和“3”,所以我达到了这一点。
到目前为止,我的正则表达式在 95% 的文件上都能正常工作,因为文件具有不同的句子,如下所示:
以及诸如此类的其他各种问题。我尝试只使用单词“Hazard”和单词“Composition”来捕获我的正则表达式,但它们出现在第 2 节之前的某些文件中,因此它捕获了错误的部分。
我可以编写多个正则表达式来捕获所有组合,但是如果我的脚本看到一个全新的文件怎么办?我认为这根本没有效率。
任何想法我会如何解决这个问题?
如果需要,我可以提供有关该项目的更多信息。
解决方案
您不必为所有文档创建单个正则表达式......我什至不会尝试。我只会处理“SECTION 2”/“SECTION 3”的情况,直到正则表达式不起作用。从 regex1 不起作用的文档中,将它们分组到遵循模式的存储桶中,并为该存储桶编写新的正则表达式。重复,直到您将文档分类到几个桶中,并且每个桶都有一个正则表达式。
推荐阅读
- meteor - 如何检查是否通过 Meteor 框架中的 3rd 方服务登录?
- ios - iOS 中的 NSLocale.currentLocale 总是返回 en_US。不返回 iPad 的语言
- asp.net-web-api - Azure 管道文件转换不起作用。为什么?
- angular - 是否有现有的文档/论坛/文章用于将 Angular 7 实施到现有的 Symfony 3 项目?
- c# - 如何将 Adaptive Card 中填写的数据发送回 TestFlow 和 TestAdapter 进行测试?
- embedded - 带有 STM32 HAL 驱动程序的 FreeRTOS 中的 UART 中断
- mongodb - 如何从 mongo 数据库中的特定集合中删除重复记录?
- python - 您可以订购弹性搜索查询结果吗?如果字段中有 True 则强制结束
- android - 如何刷新片段中recyclerview的数据?
- mysql - 使用选择总和查询来查找总和的最大值和最小值