我想提取测试1和this.test2我在下面做了,然后处理了右边的
string1:test1 = {{this.test2}}
String[] parts = string1.split("=");
我打算从上面的String中提取/打印id1和id2,product_application,product1,this.product2。如何分割字符串并将其解压缩:
测试1:
id1 IN (SELECT id2 FROM product_application WHERE product1 = {{this.product2}})
的Test2:
id3 IN (SELECT id4 FROM location WHERE region1 = {{this.region2}}
我想提取或打印如下。
字符串1的输出:
id1, id2, product_application, product1, product2
字符串2的输出:
id3, id4, location, region1, region2
答案 0 :(得分:1)
以下是您可以使用的regex:
String str =
"id1 IN (SELECT id2 FROM product_application WHERE product1 = {{this.product2}})";
String regex = "(id\\d+)|(product_\\w+)|(product\\d+)";
Pattern pat = Pattern.compile(regex);
Matcher mat = pat.matcher(str);
List<String> list = new ArrayList<>();
while (mat.find()) {
list.add(mat.group());
}
System.out.println(list);
<强>输出强>
[id1, id2, product_application, product1, product2]
修改强>
你的字符串有点竞争,所以我不知道你是否有帮助,它可以解决你问题中的两个例子:
String[] spl = str.replaceAll("IN|SELECT|FROM|WHERE|(this\\.)|[(){}=,]|(\\s{2,})", " ").
replaceAll("\\s+", " ").split("\\s");
这个想法是:
IN or SELECT or FROM or WHERE or this. or [(){}=,]
。