尝试使用正则表达式解析java中的复杂布尔表达式

时间:2016-06-11 13:19:32

标签: java regex

我正在尝试解析以下格式的字符串:

boolean1 && boolean2 &&..... booleank

boolean1 || boolean3 || .... booleank

当||和&&可以出现在每个布尔值(在String中,我有自己的测试,以查看该字符串是否可以是布尔值),在此: String [] array = {boolean1,boolean2,.... booleank} 我的所有数据都以字符串形式出现,而我的代码(预期不能正常工作)就是:

String line = "a || b && c"; //Just an example to test
    String[] booleans = line.split("[||,&&]*");
    for(String x: booleans){
        x = x.replaceall("\\s*","");
        System.out.println(x);
    }

这不能按预期工作.. 我想要它打印: 一个 b ç

输出我接收:

enter image description here

2 个答案:

答案 0 :(得分:2)

这个正则表达式应该有效:

\s*(&&|\|\|)\s*

用法:

String line = "a || b && c"; //Just an example to test
String[] booleans = line.split("\\s*(&&|\\|\\|)\\s*");
for(String x: booleans) {
    System.out.println(x);
}

它也会删除空格,因此不需要下面的行:

x = x.replaceall("\\s*", "");

Try the Java code online

答案 1 :(得分:0)

如果您不需要阵列,可以这样做:

String line = "a || b && c"; //Just an example to test
String newLine = line.replaceAll("(\\|\\|)|&&", "");

System.out.println("Line:    " + line);
System.out.println("newLine: " + newLine);

输出:

Line:    a || b && c
newLine: a b c

否则,所选答案将删除所有空白区域,从而删除\s*

String line = "a || b && c"; //Just an example to test
String newLine = line.replaceAll("\\s*(&&|\\|\\|)\\s*", "");

System.out.println("Line:    " + line);
System.out.println("newLine: " + newLine);

输出:

Line:    a || b && c
newLine: abc