替换所有出现的“;;” 在 Java 中的字符串中

tom*_*him 3 java regex replace

我正在寻找一种单行技巧来执行以下操作:

我有这个字符串"Car;;;;Plane"并想要这个结果"Car;NULL;NULL;NULL;Plane"

我正在做,myString.replaceAll(";;", ";NULL;");但结果是"Car;NULL;;NULL;Plane",我想它只找到了两次出现的模式,我希望它被视为出现了三次。

最好/最快的方法是什么?

Men*_*ena 11

您可以将以下代码与积极的“环视”一起使用:

System.out.println(
    ";;;;"
    .replaceAll("(?<=;)(?=;)", "NULL")
);
Run Code Online (Sandbox Code Playgroud)

输出

;NULL;NULL;NULL;
Run Code Online (Sandbox Code Playgroud)

笔记

  • 文档在这里
  • 从本质上讲,这里的模式由两个非捕获组组成,它们同时查看捕获点的后面和前面。如果两个条件都满足(“前面是;”和“后面是;”),则替换参数 ( "NULL") 将插入两者之间。