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

时间:2016-02-01 18:20:06

标签: java regex replaceall

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

2 个答案:

答案 0 :(得分:1)

您可以使用

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

并替换为($1)。见regex demo

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

或者,只需匹配任何()周围的所有空格:

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

并替换为$1

请参阅another demo

答案 1 :(得分:0)

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

https://github.com/javaparser/javaparser

相关问题