我想要做的是使用正则表达式将printf ( ... );
更改为printf(...);
。我尝试了line = line.replaceAll("\\s([(])\\s", "(");
的变体,但这不起作用。我应该使用什么表达?
答案 0 :(得分:1)
您可以使用
"\\s*\\(\\s*([^)]*?)\\s*\\)\\s*"
并替换为($1)
。见regex demo
关键是,在(
和)
的两边,您可以将空格与\s*
匹配,但为了匹配)
之前的空白,您需要使用惰性匹配,因为[^)]
匹配任何字符,但)
也可以匹配空格。
或者,只需匹配任何()
周围的所有空格:
"\\s*([()])\\s*"
并替换为$1
。
请参阅another demo
答案 1 :(得分:0)
如果您的字符串可能在括号周围包含空格,那么您应该考虑解析Java而不是使用正则表达式。这个项目有一个看起来可用的Java解析器: