替换字符串中的字符,Java

Ada*_*dam 5 java regex string

我有一个字符串s = "abc.def..ghi".我想替换单曲'.' 有两个'.'.然而,s.replace(".", "..")收益率"abc..def .... ghi".我怎样才能得到正确的行为?我正在寻找的输出是s = "abc..def..ghi".

chr*_*con 6

仅当点被两个字符包围时才替换点

String foo = s.replaceAll("(\\w)\\.(\\w)", "$1..$2");
Run Code Online (Sandbox Code Playgroud)

或者@Thilo评论说,只有它被两个非点包围

String foo = s.replaceAll("([^.])\\.([^.])", "$1..$2");
Run Code Online (Sandbox Code Playgroud)

即使点位于字符串的开头/结尾,用两个点替换单点,使用负向前瞻和后观:(示例字符串:.abc.def..ghi.将成为..abc..def..ghi..)

String foo = s.replaceAll("(?<!\\.)\\.(?!\\.)", "..");
Run Code Online (Sandbox Code Playgroud)

  • 我知道http://www.regular-expressions.info/并不是太糟糕,虽然它看起来不太好.但你会发现很多.前瞻/后面的解释如下:http://www.regular-expressions.info/lookaround.html @Adam (2认同)