如何用正则表达式删除需要消失的点,然后用空格替换其余的点呢?正则表达式可以看起来像
(?<=(^|[.])[\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 WorldThis Is A TestThe SWAT TeamSwaT SwaT 12001 A Space Odyssey
在正则表达式中,我需要转义点字符的特殊含义。我可以做到,
\.但我更喜欢
[.]。
所以在正则表达式中,我们有点文字。现在,该点被
(?<=...)和包围
(?=...)。这些是环视机制的一部分,称为 后向 和 向前 。
由于需要删除的点具有点(或数据的开头
^
)和一些非空格\S
,也都是非数字 D字符,因此可以使用进行测试(?<=(^|[.])[\S&&\D])[.]
。另外,需要删除的点还具有非空格和非数字字符,并且
$
在其后还有另一个点(可以选择是数据的结尾),可以写为[.](?=[\S&&\D]([.]|$))
根据需要
[\S&&\D],在字母旁边还可以匹配的字符(例如)
!@#$%^&*()-_=+...可以替换
[a-zA-Z]为仅英语字母或
\p{IsAlphabetic}Unipre中的所有字母。


