java - 仅删除定界符后的两个括号

标签 java regex split

我有一个像这样的 String java:

String query= Select * from table where date between ('2016-05-03' and '2016-05-04' )

我想在我尝试之后删除括号:

 String search="between";
if(query.toLowerCase().indexOf(search.toLowerCase()) != -1){  
query=query.replaceAll("[()]","");
 }

它有效,但如果查询在单词“between”之后或之前包含一些括号,它们也将被删除。示例:

SELECT column-names
 FROM table-name1
WHERE value IN (SELECT date 
               FROM table-name2 
              WHERE date between ('2016-05-03' and '2016-05-04' ))

我只想删除“between”这个词后的两个第一个括号来得到这个:

 SELECT column-names
 FROM table-name1
WHERE value IN (SELECT date 
               FROM table-name2 
              WHERE date between '2016-05-03' and '2016-05-04') 

谢谢你的帮助

最佳答案

您可以在正则表达式中表示您要更改的整个结构:

between\s*\(([^)]*)\)

并将其转化为

between $1

其中 $1 是对捕获括号内容的 [^)]* 组的引用。

仅当 between 后跟一个左括号时才会发生转换,并且会删除最近的右括号。

See it in action !

关于java - 仅删除定界符后的两个括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40082437/

相关文章:

java - 从 JSP 中的 HashMap 检索值

正则表达式创建两个捕获组,其中第二个捕获多次

Java:将文件拆分为每一行的字符串?

mysql - 如何根据col值进行选择

java - try catch Java 中的无限循环

java - 用户输入时的地址验证

java - 读取守护进程的输入流导致程序卡住

java - 为什么这个 Java 正则表达式不起作用?

javascript - 月/日/年月日 HH :MM:SS AM/PM date validation regular expression in javascript

c#-Windows 窗体 - 如何在列表框中找到 href 更多链接?