【发布时间】:2019-09-28 09:09:57
【问题描述】:
我们有一个 JAVA 字符串作为
String str = "WHERE geoAreaName=\"Barcelona (Spain) EUR\" AND (startDate=\"2019-01-01\" AND endDate=\"2020-01-01\")";
我们需要从中删除像[ , ], ( , ), { , } 这样的字符。
识别相同的正则表达式模式是:[\\[\\](){}]
所以在执行下面的代码时,输出是:
System.out.println(str.replaceAll("[\\[\\](){}]" , ""));
>>> WHERE geoAreaName="Barcelona Spain EUR" AND startDate="2019-01-01" AND endDate="2020-01-01"
这很好用,只是我们需要保持双引号括起来的数据完整。
Barcelona (Spain) EUR需要保持原样,不能转换成Barcelona Spain EUR
预期的输出是:
WHERE geoAreaName="Barcelona (Spain) EUR" AND startDate="2019-01-01" AND endDate="2020-01-01"
所以简而言之,我需要一个正则表达式来识别给定字符串中的字符,但引号中的部分除外。
感谢任何帮助。
【问题讨论】:
-
出于好奇,为什么要使用正则表达式编辑 Java 代码中的 SQL 字符串?为什么要删除括号字符?这听起来像XY problem。
-
实际上我使用 SQL 示例只是为了更好地解释问题。这个问题在正则表达式域中,我正在寻找的是
a regex which will identify and replace the characters in given string except for the parts which are in quotes.
标签: java regex regex-greedy