我已经阅读了很多页面试图向我解释如何使用regex
用于Python,但我仍然没有得到它。即使regex wiki和re documentation也无法帮助我。我仍然有点困惑:P
我有以下字符串:
string = "|C195|1|Base de Cálculo ST: 2.608,24 - Valor da ST: 163,66|"
我正在尝试使用以下内容仅提取2.608,24
和163,66
st_values = re.findall("\d+[,.]\d+", string)
但是,print st_values
的输出是:
['2.608','163,66']
相反,我希望它是
['2.608,24','163,66']
我不想要
['195', '1', '2.608,24','163,66']
那么,我怎样才能使用正则表达式参数的字母表来提取它们呢?
答案 0 :(得分:2)
我建议:
\b\d{1,3}(?:\.\d{3})*,\d+\b
这是demo
这是一个IDEONE code demo:
import re
p = re.compile(r'\b\d{1,3}(?:\.\d{3})*,\d+\b')
test_str = "|C195|1|Base de Cálculo ST: 2.608,24 - Valor da ST: 2.608.234,24 12.608.234,24\n 163,66|\nd2.608.234,24\n2.60d8.23d4,24"
print(re.findall(p, test_str))
答案 1 :(得分:1)
试试这个(此正则表达式还假设匹配1,23
之类的字符串。) -
>>> re.findall("\d+(?:\.\d+)?,\d+", string)
['2.608,24', '163,66']
答案 2 :(得分:1)
如果要从第二个最后一列/字段中提取数字,可以执行以下操作:
In: re.findall(r"[0-9,.]+",string.split('|')[-2])
Out: ['2.608,24', '163,66']
否则,如果你只使用正则表达式,并且其他列中有相似的数字,则有问题要将它们过滤掉。