我想处理一些像这样打印出来的字符串日期
'node0, node1 0.04, node8 11.11, node14 72.21\n'
'node1, node46 1247.25, node6 20.59, node13 64.94\n'
我想在这里找到所有的 float ,这是我使用的代码
for node in nodes
pattern= re.compile('(?<!node)\d+.\d+')
distance = pattern.findall(node)
结果是这样的
['0.04', '11.11', '4 72']
我想要的是这个
['0.04', '11.11', '72.21']
关于修正这个正则表达式有什么建议吗?
最佳答案
在正则表达式中,.
字符被解释为通配符并且可以匹配(几乎)任何字符。因此,您的搜索模式实际上允许一个数字或一组数字,后跟任何字符,然后是另一个数字或一组数字。要停止对点字符的这种解释,请使用反斜杠 \
将其转义。
(旁白:您不需要在循环内编译正则表达式模式。事实上,这会减慢您的代码速度。)
pattern = re.compile('(?<!node)\d+\.\d+')
for node in nodes:
distance = pattern.findall(node)
print distance
输出:
['0.04', '11.11', '72.21']
['1247.25', '20.59', '64.94']
关于python - 如何在 python 中修复这个正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30537314/