正则表达式删除 Java 中括号周围的空格

Regex to remove spaces around parenthesis in Java

我想做的是用正则表达式将 printf ( ... ); 更改为 printf(...);。我试过 line = line.replaceAll("\s([(])\s", "("); 的变体,但这不起作用。我应该使用什么表达方式?

您可以使用

"\s*\(\s*([^)]*?)\s*\)\s*"

并替换为()。参见 regex demo

重点是()两边可以用\s*匹配空格,但是为了匹配)之前的空格,您需要使用惰性匹配,因为 [^)] 可以匹配任何字符,但是 ) 也可以匹配空格。

或者,只匹配任何 ():

周围的所有空格
"\s*([()])\s*"

并替换为

another demo

如果您的字符串可能包含括号周围的空格,那么您应该考虑解析 Java 而不是使用正则表达式来执行此操作。这个项目有一个 Java 看起来可用的解析器:

https://github.com/javaparser/javaparser