2024-10-02 04:28:44 发布
网友
我想用具有以下表格的货币(列表)提取价格:
1.10欧元
1美元
5美元
1.10美元
1.99美元
10欧元
我试过这个python函数关于芬德尔(图案、字符串) 带正则表达式
(?:[\£\$\€]{1}[,\d]+.?\d*)
https://regex101.com/r/X5SPDK/1
但我没有得到预期的结果
如果不进行验证,则此表达式可能更接近您的想法:
[£$€]\s*[.,\d]+|[.,\d]+\s*[£$€]|(?:Eur|dollars?)\s*[.,\d]+|[.,\d]+\s*(?:Eur|dollars?)
它将无法验证。如果您想捕获数字,还可以添加捕获组。你知道吗
import re regex = r"[£$€]\s*[.,\d]+|[.,\d]+\s*[£$€]|(?:Eur|dollars?)\s*[.,\d]+|[.,\d]+\s*(?:Eur|dollars?)" test_str =""" I bought a car $12,250,000 it was expensive that thing was £14,500,123.125521 dollas afsaf£120.25sfsafsa $ 1.10 € 1,10 1,10 € $ 1 € 18 1€ 5$ $1.10 €1,10 1,10€ 1.99$ 1,99$ Eur 1.10 Eur 1,99 Eur 10 Eur1.10 Eur1,99 Eur10 1.10 dollar 1,99 dollar 10 dollar """ print(re.findall(regex, test_str, re.I))
['$12,250,000', '£14,500,123.125521', '£120.25', '$ 1.10', '€ 1,10', '1,10 €', '$ 1', '€ 18', '1€', '5$', '$1.10', '€1,10', '1,10€', '1.99$', '1,99$', 'Eur 1.10', 'Eur 1,99', 'Eur 10', 'Eur1.10', 'Eur1,99', 'Eur10', '1.10 dollar', '1,99 dollar', '10 dollar']
If you wish to explore/simplify/modify the expression, it's been explained on the top right panel of regex101.com. If you'd like, you can also watch in this link, how it would match against some sample inputs.
jex.im可视化正则表达式:
如果不进行验证,则此表达式可能更接近您的想法:
它将无法验证。如果您想捕获数字,还可以添加捕获组。你知道吗
测试
输出
正则表达式电路
jex.im可视化正则表达式:
相关问题 更多 >
编程相关推荐