什么是删除括号内的空白的正则表达式?
问题描述:
我正在用Java编写一个程序来接受查询。如果我有一个像什么是删除括号内的空白的正则表达式?
insert
into
abc values ( e
, b );
查询...我可以使用什么样的正则表达式将其转换成:
insert into abc values(e,b);
...或:
insert:into:abc:values(e,b);
其实我想我知道如何写一个正则表达式来删除括号内的空格。
答
假设正确平衡的括号,并没有嵌套的括号,下面将去掉括号内的所有空白(只有那里):
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
月括号巢?如果是这样的话,你会被搞砸(一个Perl向导可能会管理它,但结果不会很好或可维护,我不会打赌它可以移植到不太复杂的正则表达式引擎)。 – delnan
让我们保持简单。没有嵌套的括号。 – Arslan
这不完全是解决你的问题的方法,因为你已经在上面得到了一些非常好的回应,但是如果你对这样的事情保持镇静,我发现有一些很棒的测试者在线 - 我使用[这一个](http://regexpal.com)最多,因为它是实时的,并在右侧有一个很好的参考表。 – j6m8