Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 - Fatal编程技术网

在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美元
我尝试了这个python函数re.findall(模式,字符串) 用正则表达式

(?:[\\\$\€]{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']