我想删除任何单个字符(包括字符串开头或结尾的单个字符)。 例如,
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 .
我想在同一个正则表达式中删除开头和结尾的单个字符。
答案 0 :(得分:1)
您可以使用
is_bool
或
.replaceAll("(?s)(?<!\\S).(?!\\S)", " ")
,也许,对结果使用.replaceAll("(?<!\\S)[^ ](?!\\S)", " ")
。请参阅regex demo。
<强>详情:
trim()
- DOTALL嵌入式标记选项(以便(?s)
可以匹配任何字符,包括换行符号).
- 需要在当前位置之前启动字符串或空格的负面后视(?<!\S)
- (消费部分)任何一个字符(如果它必须是空格,请使用.
)[^ ]
- 负向前瞻,需要字符串的结尾或紧靠当前位置右侧的空格。请注意,您可以根据需要进一步调整消费部分。如果您只需要匹配非空白字符,请将(?!\S)
替换为.
。