java regex用空格替换任何单个字符

时间:2016-11-28 22:46:52

标签: java regex

我想删除任何单个字符(包括字符串开头或结尾的单个字符)。 例如,

String s = "I am testing regex. This'll print results for A B c d ^ * ( ) { } [ ] done .";
System.out.println(s);

应打印:

am testing regex. This'll print results for           done

我试过了:

s = s.replaceAll("(\\s+.(?=\\s))", " ");

给了我:

I am testing regex. This'll print results for           done .

我想在同一个正则表达式中删除开头和结尾的单个字符。

1 个答案:

答案 0 :(得分:1)

您可以使用

is_bool

.replaceAll("(?s)(?<!\\S).(?!\\S)", " ")

,也许,对结果使用.replaceAll("(?<!\\S)[^ ](?!\\S)", " ") 。请参阅regex demo

<强>详情:

  • trim() - DOTALL嵌入式标记选项(以便(?s)可以匹配任何字符,包括换行符号)
  • . - 需要在当前位置之前启动字符串或空格的负面后视
  • (?<!\S) - (消费部分)任何一个字符(如果它必须是空格,请使用.
  • [^ ] - 负向前瞻,需要字符串的结尾或紧靠当前位置右侧的空格。

请注意,您可以根据需要进一步调整消费部分。如果您只需要匹配非空白字符,请将(?!\S)替换为.