python - 正则表达式-如何解释数字之间没有空格
问题描述
我正在尝试从包含大量财务信息的 pdf 文档中抓取数据。我是使用正则表达式的初学者,但我能够找到我专门寻找的数以亿计的数字。但是,该数字的结尾和下一个数字的开头之间没有空格,所以我很难不包括下一个数字。
这是我得到的结果:
['183,662,7203.004.00']
我要抓取的数字是 183,662,720,但正如您所见,由于没有空间,它正在捕获之后的数字。
我使用的代码是re.findall('\(line 1 minus line 2\)(\d.+?)Less',y)
. 我将把它用于本文档的其他版本,其中可能有数万到数十亿的数字。所以这也使这有点复杂。
任何帮助将不胜感激,谢谢!
解决方案
如果你想使用整个模式,你可以使用:
\(line 1 minus line 2\)(\d{1,3}(?:,\d{3})*)\d*(?:\.\d+)* Less\b
模式匹配:
\(line 1 minus line 2\)
匹配(line 1 minus line 2)
(
捕获组 1\d{1,3}(?:,\d{3})*
匹配 1+ 位可选地由 a,
和 3 位重复的数字
)
关闭组 1\d*(?:\.\d+)*
匹配可选数字,可选后跟匹配 a.
和数字Less\b
匹配Less
后跟单词边界以防止部分匹配
例如
import re
y = r"This is (line 1 minus line 2)183,662,7203.004.00 Less test"
print(re.findall(r"\(line 1 minus line 2\)(\d{1,3}(?:,\d{3})*)\d*(?:\.\d+)* Less\b" ,y))
输出
['183,662,720']
推荐阅读
- python - Python 多输入 - 多输出神经网络归一化 - 逆结果
- java - 统一使用实现 AndroidJavaClass
- laravel - Laravel 6 验证错误?
- c# - Azure 认知图像分析无法处理图像上的 alpha 通道?
- excel - 保存PDF时VBA Excel不包括一张纸
- api - curl GET json请求超过100个项目
- python - PyCharm 调试器在尝试调试简单程序时“找不到空闲的套接字端口”
- python - 基于逻辑的 SQLAlchemy 过滤器
- java - 子字段上的 GraphQL 参数
- css - 仅当屏幕高度足够时 Flexbox 垂直居中