gpt4 book ai didi

python - 在 Python 中使用正则表达式提取特定值

转载 作者:行者123 更新时间:2023-11-28 21:51:33 25 4
gpt4 key购买 nike

我有一行文本如下图,我想提取其中的金额,

Your bill of USD 17.99 is due on 09-01-2002

在将上述行视为字符串后,我编写了如下正则表达式,

s = 'Your bill of USD 17.99 is due on 09-01-2002'

match = re.search( r'bill of.*([0-9]*\.[0-9]{2})', s.lower() )
if match:
print match.group(1)

它打印,

.99

但我希望它打印17.99

我似乎不明白为什么不捕获全部金额。我认为它必须与正则表达式的贪婪方面做一些事情。任何建议都会有很大帮助。

最佳答案

你的问题是 * 表示零个或多个. 包括数字,并且捕获是贪婪的 (即较早的表达式 .* 是“窃取”所有数字)。请参阅此演示:https://regex101.com/r/vN5vJ5/1

相反,让它匹配数字开头之前的所有非数字(并使用\d 而不是[0-9] 数字中的数字):

>>> import re
>>> s = 'Your bill of USD 17.99 is due on 09-01-2002'
>>> re.findall(r'bill of\D*(\d*\.\d{2})', s)
['17.99']

更新演示:https://regex101.com/r/vN5vJ5/4

如果您的格式不允许,例如USD .99(而不是 USD 0.99),考虑捕获第一个数字“一个或多个”(+) 而不是“零个或多个” (*)。

关于python - 在 Python 中使用正则表达式提取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30050343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com