如何删除需要用正则表达式消失的点,然后用空格替换其余的点?正则表达式可能看起来像(?<=(^|[.])[\\S&&\\D])[.](?=[\\S&&\\D]([.]|$))
.
String[] data = {
"Hello.World",
"This.Is.A.Test",
"The.S.W.A.T.Team",
"S.w.a.T.",
"S.w.a.T.1",
"2001.A.Space.Odyssey" };
for (String s : data) {
System.out.println(s.replaceAll(
"(?<=(^|[.])[\\S&&\\D])[.](?=[\\S&&\\D]([.]|$))", "")
.replace('.', ' '));
}
结果
Hello World
This Is A Test
The SWAT Team
SwaT
SwaT 1
2001 A Space Odyssey
在正则表达式中,我需要转义点字符的特殊含义。我可以做到,\\.
但我更喜欢[.]
.
所以在正则表达式的慢跑中,我们有点字面量。现在这个点被(?<=...)
and包围了(?=...)
。这些是称为look-behind和look-ahead的环视机制的一部分。
根据需要[\\S&&\\D]
,字母旁边还匹配字符,例如!@#$%^&*()-_=+...
可以仅替换[a-zA-Z]
为英文字母或\\p{IsAlphabetic}
Unicode 中的所有字母。