我需要从某些字符串中提取总和。
我现在有这个
values = re.findall(r" \d*[.,]\d+", mystr)
我需要匹配所有小数值,即使它有一个"。"或","以欧洲方式和美国方式分开数千美分。 以下是一些典型的字符串:
DERT-UID:123456 01 DD。 2014-D C-12 BRUT:27,50 - COMM 0,37 REF.OP.123
我需要27,50和037
ALL / 1000.00 / NR.00123456789 / KOM。 10.00 / DAT.23.123123123123 0
我需要1000.00和10.00
F 1047 DU 31.12.14
我什么都不需要,但现在我的正则表达式匹配" 31.12"部分日期。
它也应该匹配" 1,000.00"或者" 1.000,00",我现在没有例子,但可能会在将来发生(或者我的正则表达不足以检测它们)。
由于
答案 0 :(得分:3)
您可以在python中使用这种基于外观的正则表达式:
(?<![.,\d])\d+(?:([.,])\d+(?:\1\d+)*)?(?!\1)[.,]\d+(?![,.\d])
(?![,.\d])
在此匹配后不是数字或点/逗号(?<![,.\d])
在此匹配之后断言前一个字符不是数字或点/逗号答案 1 :(得分:1)
这样的东西?
print re.findall("\d+[,\.]\d+",re.sub(r"(\d+[\.,]\d+[\.,])+","",oldstr))