Java正则表达式替换特殊字符,一个或多个空格和具有特殊字符和句点的句点

时间:2012-12-06 07:54:28

标签: java regex

我有以下字符串:

See it now! .5..%..off your purchase!.Only today.

我希望它是

See it now! 5% off your purchase! Only today.

这是:

每个特殊字符后跟零个或多个空格以及一个或多个句点,将被特殊字符和空格替换。如果是数字和2个句点,则仅用空格替换

我该怎么做?

2 个答案:

答案 0 :(得分:2)

\试试这个

String resultString = subjectString.replaceAll("\\B[ .]+", " ");

这匹配一个或多个前面有非单词边界的空格或句点。然后将它们替换为单个空格。

修改

基于修正后的问题:

String resultString = subjectString.replaceAll("\\B[ .]+|(\\d)\\.+", "$1 ");

还匹配一个数字后跟一个或多个句点。这些时期被一个空格所取代。

答案 1 :(得分:1)

这应该有效:

String resultString = subjectString.replaceAll(
    "(?x)      # verbose regex                             \n" +
    "(\\p{P})  # Match and capture a punctuation character \n" +
    "\\ *      # Match zero or more spaces                 \n" +
    "\\.       # Match a dot", "$1 ");