从字符串

时间:2017-04-19 18:17:54

标签: java string

我想提取测试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

1 个答案:

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

这个想法是:

  1. 用空格替换每个IN or SELECT or FROM or WHERE or this. or [(){}=,]
  2. 用一个空格替换多个字符串 3.用空格分割结果,你只得到你的结果。