Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析查询SQL喜欢匹配开括号和闭括号_Java_Regex - Fatal编程技术网

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");

我不在我的编译器附近,所以我无法测试它,但是您是否尝试过将String
split()
方法与
”和“
参数一起使用?这应该会返回您想要的字符串数组,然后对于每个字符串,您可以对其进行修剪并删除前导字符和尾随字符(应该是括号)如果一个值包含单词
?比如
(one=LAND)
这可能会引起兴趣…谢谢,请看下面我的答案。可能您可以使用不同的方法:
string = string.substring(2, string.length() - 2);
String[] split = string.split("\\) AND \\(");

for (String s : split)
    System.out.println(s);