如何替换多个匹配的正则表达式

naf*_*fas 5 java regex string

我有一组正则表达式替换需要应用于一组字符串,

例如:

  1. 所有多个空格都带有单个空格("\s{2,}" --> " ")
  2. 全部 。后跟一个 char 。后跟空格,后跟字符 (\.([a-zA-Z]-->". $1")

所以我会有这样的东西:

String s="hello     .how are you?";
s=s.replaceAll("\\s{2,}"," ");
s=s.replaceAll("\\.([a-zA-Z])",". $1");
....
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是想象一下我正在尝试替换一个长字符串上的 100 多个这样的表达式。不用说这有多慢。

所以我的问题是是否有一种更有效的方法来使用单个replaceAll(或类似的东西,例如模式/匹配器)来概括这些替换

我已经按照Java替换了多个不同的...

但问题是我的正则表达式不是simple Strings

anu*_*ava 4

您有这 2 个replaceAll电话:

s = s.replaceAll("\\s{2,}"," ");
s = s.replaceAll("\\.([a-zA-Z])",". $1");
Run Code Online (Sandbox Code Playgroud)

您可以将它们组合成一个,replaceAll如下所示:

s = s.replaceAll("\\s{2,}|(\\.)(?=[a-zA-Z])", "$1 ");
Run Code Online (Sandbox Code Playgroud)

正则表达式演示