Java 解析查询SQL喜欢匹配开括号和闭括号
我有一根这样的绳子Java 解析查询SQL喜欢匹配开括号和闭括号,java,regex,Java,Regex,我有一根这样的绳子 ((one = WORD) AND (two != 2) AND (three > 3) AND (four >= 4) AND (five < 5) AND (six <= 6) AND (seven IN (seven1, seven2)) AND (eight LIKE 'like')) one = WORD two != 2 three > 3 four >= 4 five < 5 six <= 6 seven IN
((one = WORD) AND (two != 2) AND (three > 3) AND (four >= 4) AND (five < 5) AND (six <= 6) AND (seven IN (seven1, seven2)) AND (eight LIKE 'like'))
one = WORD
two != 2
three > 3
four >= 4
five < 5
six <= 6
seven IN (seven1, seven2)
eight LIKE 'like'
string = string.substring(2, string.length() - 2);
String[] split = string.split("\\) AND \\(");
for (String s : split)
System.out.println(s);
((一个=单词)和(两个!=2)和(三个>3)和(四个>=4)和(五个<5)和(六个<3
四>=4
五岁以下
使用中的模式,我编写了这个示例代码
String string = "((one = WORD) AND (two != 2) AND (three > 3) AND (four >= 4) AND (five < 5) AND (six <= 6) AND (seven IN (seven1, seven2)) AND (eight LIKE '1,2,3'))";
long start_time = System.currentTimeMillis();
Pattern pattern = Pattern.compile("\\(([^()]*|\\([^()]*\\))*\\)");
Matcher matcher = pattern.matcher(string);
while (matcher.find())
System.out.println(matcher.group());
long stop_time = System.currentTimeMillis();
System.out.println("Time " + (stop_time - start_time) + "ms");
我不在我的编译器附近,所以我无法测试它,但是您是否尝试过将Stringsplit()
方法与”和“
参数一起使用?这应该会返回您想要的字符串数组,然后对于每个字符串,您可以对其进行修剪并删除前导字符和尾随字符(应该是括号)如果一个值包含单词和?比如(one=LAND)
这可能会引起兴趣…谢谢,请看下面我的答案。可能您可以使用不同的方法:
string = string.substring(2, string.length() - 2);
String[] split = string.split("\\) AND \\(");
for (String s : split)
System.out.println(s);