Python 正则表达式-如何解释数字之间没有空格
我试图从包含大量财务信息的pdf文档中提取数据。我是一个使用正则表达式的初学者,但是我能够找到我特别想要的数亿个数字。但是,这个数字的结尾和下一个数字的开头之间没有空格,所以我很难不包括下一个数字 这就是我得到的结果:Python 正则表达式-如何解释数字之间没有空格,python,regex,re,Python,Regex,Re,我试图从包含大量财务信息的pdf文档中提取数据。我是一个使用正则表达式的初学者,但是我能够找到我特别想要的数亿个数字。但是,这个数字的结尾和下一个数字的开头之间没有空格,所以我很难不包括下一个数字 这就是我得到的结果: ['183,662,7203.004.00'] 我想抓取的数字是183662720,但正如你所看到的,由于没有空间,它会在之后捕获这些数字 我使用的代码是re.findall('\(第1行减去第2行)(\d.+?)Less',y)。我将在本文档的其他版本中使用它,其中可能有数万
['183,662,7203.004.00']
我想抓取的数字是183662720,但正如你所看到的,由于没有空间,它会在之后捕获这些数字
我使用的代码是re.findall('\(第1行减去第2行)(\d.+?)Less',y)
。我将在本文档的其他版本中使用它,其中可能有数万到数十亿的数字。这也让事情复杂了一点
任何帮助都将不胜感激,谢谢 如果要使用整个模式,可以使用:
\(line 1 minus line 2\)(\d{1,3}(?:,\d{3})*)\d*(?:\.\d+)* Less\b
模式匹配:
匹配\(第1行减去第2行)
(第1行减去第2行)
Capturegroup 1(
匹配1+个数字(可选地由\d{1,3}(?:,\d{3})*
和3个数字重复),
关闭第1组)
匹配可选数字,然后可选地匹配a\d*(?:\。\d+)*
和数字
MatchLess\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']
不发布答案,因为不完全清楚条件是什么,但是
\b\d{1,3}(?:,\d{3})+
可能是一个好的开始。只要数字使用逗号作为千位分隔符,并且前面有一个逗号,它将匹配1000及以上。