使用正则表达式删除尾随特殊字符

时间:2012-04-18 03:49:43

标签: java regex

我需要从语句中删除尾随小数/点。以下是声明

ABC paid 10.25 RS confirmed. from bank XYZ 20125722. on 23-12-2012

我想从语句中删除尾随小数/点。删除十进制/点后,它应该像

ABC paid 10.25 RS confirmed from bank XYZ 20125722 on 23-12-2012

请注意,我不需要删除10.25中的小数,但在其他地方。我怎么能用Java做到这一点?

5 个答案:

答案 0 :(得分:1)

在Java中,只需对字符串使用replaceAll(String pattern,String replacement)方法,如下所示:

String result = "ABC paid 10.25 RS confirmed. from bank XYZ 20125722. on 23-12-2012".replaceAll("\\.\\s+"," ") ;

答案 1 :(得分:0)

您可以使用的正则表达式是Perl或Perl-regex支持语言中的/\.\S+/。否则/\.[ ^I]/其中“^ I”是TAB字符。将其替换为空。

希望有所帮助。

答案 2 :(得分:0)

您应该使用 \\。\\ s + ,因为点后可能包含许多空格或一个空格。

以下代码:

String result = "ABC paid 10.25 RS confirmed. from bank  XYZ 20125722. on 23-12-2012"
               .replaceAll("\\.\\s+", " ");

答案 3 :(得分:0)

那么,您想要匹配任何数字中的.吗?您可以使用名为negative lookahead的方法:

"\\.(?![0-9])"

匹配任何.之前的数字。

答案 4 :(得分:0)

你的正则表达式是

\.(?=\s|$)

表示在点后跟空格或字符串结尾时匹配点。 (?=\s|$)是一个positive lookahead,它确保后面有一个空格或字符串的结尾,但是不匹配,所以不需要再插入它,只需用空字符串替换。

here on Regexr

对于你的java

String res = "ABC paid 10.25 RS confirmed. from bank XYZ 20125722. on 23-12-2012".replaceAll("\\.(?=\\s|$)", "");