正则表达式除最后一个字符外的所有字符

14

这是我的字符串:50.00.00..00.00

我想匹配除最后一个点之外的所有.,所以在替换后,我最终得到50000000.00

有人能帮助我吗?


3
你能否发布你目前正在使用的正则表达式模式? - user1231231412
2个回答

29
\.(?=.*\.)

匹配一个点号 (\.),紧随其后必须有另一个点号 ((?=.*\.))。

(前提是正则表达式引擎支持向前查看,例如 PCRE、Python 等)


谢谢,这个可行!我一直在尝试使用前瞻,但无法使其正常工作。干杯! - malamili
使用JavaScript可以很好地运行。您可以在此处获取有关正则表达式的解释:(http://rick.measham.id.au/paste/explain.pl?regex=%5C.%28%3F%3D.*%5C.%29) - mayrs
在Java中也可以正常工作。 - Gautam

3

所以您没有指定正则表达式工具、引擎等。您可以使用例如 sed(仅在最后一个 dot 后面总是有两个数字并且最后一个 dot 总是存在时有效):

echo "50.00.00..00.00" | sed 's/\.//;s/\(..\)$/.\1/'

但是还有其他几种方法,例如使用前瞻正则表达式(如果你的系统支持的话)。
希望对你有所帮助。

是的,我应该提到一下,我正在使用Java。而KennyTM的答案对我有用。无论如何,谢谢! - malamili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接