在Python中从字符串中提取特定货币金额
我想使用具有以下格式的货币(列表)提取价格:在Python中从字符串中提取特定货币金额,python,regex,Python,Regex,我想使用具有以下格式的货币(列表)提取价格: 一元一角 1,10欧元 1,10欧元 一美元 18欧元 1欧元 五,$ 一元一角 1,10欧元 1,10欧元 1.99$ 1,99$ 1.10欧元 1,99欧元 10欧元 1.10欧元 1,99欧元 10欧元 1.10美元 1,99美元 10美元 我尝试了这个python函数re.findall(模式,字符串) 用正则表达式 (?:[\\\$\€]{1}[,\d]+.?\d*) 但是我没有得到预期的结果如果您没有验证,这个表达式可能更接近您的想
- 一元一角
- 1,10欧元
- 1,10欧元
- 一美元
- 18欧元
- 1欧元
- 五,$
- 一元一角
- 1,10欧元
- 1,10欧元
- 1.99$
- 1,99$
- 1.10欧元
- 1,99欧元
- 10欧元
- 1.10欧元
- 1,99欧元
- 10欧元
- 1.10美元
- 1,99美元
- 10美元
(?:[\\\$\€]{1}[,\d]+.?\d*)
但是我没有得到预期的结果如果您没有验证,这个表达式可能更接近您的想法:
[£$€]\s*[.,\d]+|[.,\d]+\s*[£$€]|(?:Eur|dollars?)\s*[.,\d]+|[.,\d]+\s*(?:Eur|dollars?)
它将无法进行验证。如果您想捕获数字,还可以添加捕获组
试验
输出
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入
正则表达式电路 可视化正则表达式:
如果您不进行验证,此表达式可能更接近您的想法:
[£$€]\s*[.,\d]+|[.,\d]+\s*[£$€]|(?:Eur|dollars?)\s*[.,\d]+|[.,\d]+\s*(?:Eur|dollars?)
它将无法进行验证。如果您想捕获数字,还可以添加捕获组
试验
输出
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入
正则表达式电路 可视化正则表达式:
嗯,你甚至没有尝试,伙计:例如,你的正则表达式甚至没有尝试匹配
美元
,欧元
,或者货币符号在实际值的右边。货币符号和值之间的空格也是如此。另外,
不完全匹配文字点,例如,它也将匹配ü
。当你说这个表单时,你是指列表中的文字吗?这仅仅是<代码>那个些仅仅是<代码>那个些仅仅是<代码>那个些仅仅是<代码>那个些仅仅是<代码>那个些仅仅是<代码>那个些仅仅是<代码>那个些(:::::::::::::(::::::(::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::((((((::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,Eur
或实际值右侧的货币符号。货币符号和值之间的空格也是如此。另外,
不完全匹配文字点,例如,它也将匹配ü
。当你说这个表单时,你是指列表中的文字吗?那只是^(:$(?:[]1(?:.10)?1(?,(?:10[])99(:[]美元|$)。(?:10[]美元| 99$)0[]美元| | | | 5美元|欧元[]1(?:,99 | 10 | | | | | | | | | 0)(?:[]美元1241:,10 | | | | | | | | | | | | | | | | 10; 10!这正是我要找的。你可以为不区分大小写的匹配添加标志。谢谢!这正是我要找的
['$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']