Python 使用正则表达式从文本中提取金额

Python 使用正则表达式从文本中提取金额,python,regex,Python,Regex,我是正则表达式新手,我想从给定文本中提取金额,以下是我的代码: import pandas as pd import re msg='He was paid USD 2,000.00 & USD 500 on 19-02-2018 at 08:15:24.' pattern = re.compile(r'USD\s+(\d+)') matches = pattern.finditer(msg) for match in matches: print(match) 我希望

我是正则表达式新手,我想从给定文本中提取金额,以下是我的代码:

import pandas as pd
import re
msg='He was paid USD 2,000.00 & USD 500 on 19-02-2018 at 08:15:24.'

pattern = re.compile(r'USD\s+(\d+)')

matches = pattern.finditer(msg)


for match in matches:
    print(match)
我希望输出为2000和500美元,但目前我得到2美元作为输出。请帮助。
注意:原始消息很长,但所有金额前面都有美元。

试试这个。它会起作用的

USD\s+(\d+)(,*)(\d+)

这将是正确的模式:
r'USD\s+([\d,\.]+)'

模式=重新编译(r'USD\s+([\d,\.]+)) >>>matches=pattern.finditer(msg) >>>对于匹配中的匹配: ... 打印(匹配) ... 您需要在正则表达式中包含逗号(
)和点(
)<代码>\d将仅与数字匹配


一旦您将它们从最终匹配中删除,您的工作就完成了。

查看您是否正在等待一个解决方案,该解决方案使用一行代码从
2000.00
中提取
2000
,请记住,您无法在一次匹配操作中匹配不连续的文本。
(?如果我只想在一行中显示第一个金额,即2000.00美元,该怎么办?我将逐行读取文件。
>>> pattern = re.compile(r'USD\s+([\d,\.]+)')
>>> matches = pattern.finditer(msg)
>>> for match in matches:
...     print(match)
...
<re.Match object; span=(12, 24), match='USD 2,000.00'>
<re.Match object; span=(27, 34), match='USD 500'>