用一个下划线替换点序列

Ser*_*giu 2 java regex string replace

我有一个包含任意数量点的字符串,有时也包含一系列点.

我想._(下划线)替换每个(点),但是当有一系列点时,这也应该只产生一个下划线.

有任何想法吗?

我正在使用java.

cod*_*ict 10

您可以使用以下replaceall方法:

str = str.replaceAll("\\.+","_");
Run Code Online (Sandbox Code Playgroud)

在Ideone上看到它

正则表达式的解释 \\.+

.是一个正则表达式元字符匹配任何东西(换行除外).因为我们想要匹配一个文字.我们逃避它\.由于Java Strings和regex引擎都\用作我们需要使用的转义字符\\,因此+是一个或多个的量词.

或者我们可以使用:

str = str.replaceAll("[.]+","_");
Run Code Online (Sandbox Code Playgroud)

由于.字面上的字符类内部被处理,因此不需要逃避它.