Python regex从字符串中提取财务金额
我需要从一些字符串中提取和 我现在有这个Python regex从字符串中提取财务金额,python,regex,python-3.x,Python,Regex,Python 3.x,我需要从一些字符串中提取和 我现在有这个 values = re.findall(r" \d*[.,]\d+", mystr) 我需要匹配所有十进制值,即使有一个“.”或“,”以区分欧洲和美国的千分之一。 以下是一些典型的字符串: DERT-UID:123456 01 DD.2014-D C-12 BRUT:27,50-通信0,37参考OP.123 我需要27,50和037 全部/1000.00/NR.00123456789/KOM。10.00/DAT.23.1230 我需要1000.00和1
values = re.findall(r" \d*[.,]\d+", mystr)
我需要匹配所有十进制值,即使有一个“.”或“,”以区分欧洲和美国的千分之一。
以下是一些典型的字符串:
DERT-UID:123456 01 DD.2014-D C-12 BRUT:27,50-通信0,37参考OP.123
我需要27,50和037
全部/1000.00/NR.00123456789/KOM。10.00/DAT.23.1230
我需要1000.00和10.00
F 1047 DU 31.12.14
我什么都不需要,但现在我的正则表达式匹配日期的“31.12”部分
它也应该匹配“1000.00”或“1.000,00”,我现在没有示例,但将来可能会发生(或者我的正则表达式不够好,无法检测它们)
谢谢您可以在python中使用这个基于查找的正则表达式:
(?<![.,\d])\d+(?:([.,])\d+(?:\1\d+)*)?(?!\1)[.,]\d+(?![,.\d])
(?
(?![,.\d])
断言此匹配后的下一个字符不是数字或点/逗号
(?断言此匹配后的上一个字符不是数字或点/逗号
像这样的东西
print re.findall("\d+[,\.]\d+",re.sub(r"(\d+[\.,]\d+[\.,])+","",oldstr))
谢谢,但是美国的“1000.00”和UE的“1.000,00”怎么样?我进一步更新了代码/演示,看看这是否适合您。(?:(?!\1[,])\d+)+
只需确保我们不将1000,00
类型的值作为有效匹配进行匹配。它通过使用一个负向前看来实现,其中\1
返回到第一个逗号或点。现在我遇到一个异常引发错误(“无法引用开放组”)
您的站点是否使用了与re python模块不兼容的系统?让我检查并还原