什么是删除括号内的空白的正则表达式?

问题描述:

我正在用Java编写一个程序来接受查询。如果我有一个像什么是删除括号内的空白的正则表达式?

insert  
into 
abc  values ( e 
, b ); 

查询...我可以使用什么样的正则表达式将其转换成:

insert into abc values(e,b); 

...或:

insert:into:abc:values(e,b); 

其实我想我知道如何写一个正则表达式来删除括号内的空格。

+0

月括号巢?如果是这样的话,你会被搞砸(一个Perl向导可能会管理它,但结果不会很好或可维护,我不会打赌它可以移植到不太复杂的正则表达式引擎)。 – delnan

+0

让我们保持简单。没有嵌套的括号。 – Arslan

+0

这不完全是解决你的问题的方法,因为你已经在上面得到了一些非常好的回应,但是如果你对这样的事情保持镇静,我发现有一些很棒的测试者在线 - 我使用[这一个](http://regexpal.com)最多,因为它是实时的,并在右侧有一个很好的参考表。 – j6m8

假设正确平衡的括号,并没有嵌套的括号,下面将去掉括号内的所有空白(只有那里):

String resultString = subjectString.replaceAll("\\s+(?=[^()]*\\))", ""); 

它把

insert  
into 
abc  values ( e 
, b ); 

纳入

insert  
into 
abc  values (e,b); 

说明:

\s+  # Match whitespace 
(?=  # only if followed by... 
[^()]* # any number of characters except parentheses 
\)  # and a closing parenthesis 
)  # End of lookahead assertion 
+0

完美的一个。非常感谢。我将再次使用replaceAll(“\\ s +”,“:”);获取结果并执行查询 – Arslan

据我看到你不需要RegEx这个。这应该工作:

yourString.replaceAll("\n", " ").replaceAll("(","(").replaceAll(")",")").replaceAll(", ",",").replaceAll(" ,",","); 
+0

这不是一个解决方案。至于以下字符串,它不会工作在哪里 (e,b);可以包含多个空格。 – Arslan

+0

他发布我的解决方案的第一个字符串工作。但他编辑了他的例子字符串。 – styrr