Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式-如何解释数字之间没有空格_Python_Regex_Re - Fatal编程技术网

Python 正则表达式-如何解释数字之间没有空格

Python 正则表达式-如何解释数字之间没有空格,python,regex,re,Python,Regex,Re,我试图从包含大量财务信息的pdf文档中提取数据。我是一个使用正则表达式的初学者,但是我能够找到我特别想要的数亿个数字。但是,这个数字的结尾和下一个数字的开头之间没有空格,所以我很难不包括下一个数字 这就是我得到的结果: ['183,662,7203.004.00'] 我想抓取的数字是183662720,但正如你所看到的,由于没有空间,它会在之后捕获这些数字 我使用的代码是re.findall('\(第1行减去第2行)(\d.+?)Less',y)。我将在本文档的其他版本中使用它,其中可能有数万

我试图从包含大量财务信息的pdf文档中提取数据。我是一个使用正则表达式的初学者,但是我能够找到我特别想要的数亿个数字。但是,这个数字的结尾和下一个数字的开头之间没有空格,所以我很难不包括下一个数字

这就是我得到的结果:

['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
    • \d{1,3}(?:,\d{3})*
      匹配1+个数字(可选地由
      和3个数字重复)
  • 关闭第1组
  • \d*(?:\。\d+)*
    匹配可选数字,然后可选地匹配a
    和数字
  • Less\b
    Match
    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及以上。