逻辑运算符的正则表达式

时间:2014-07-21 11:31:43

标签: java regex

我正在尝试为以下模式创建正则表达式...例如:

osystems::win.2.vm#true AND osystems::win.2.vm#false AND (osystems::win.7.headless#false OR browsers::firefox.version#8)

我希望使用正则表达式解析它,最后得到以下内容:

  • osystems :: win.2.vm#真
  • osystems :: win.2.vm#假
  • (osystems :: win.7.headless #false OR browsers :: firefox.version#8)

然后我需要遍历列表执行必要的操作...从括号中的那些开始,以防有任何操作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在以下示例中,定义了两个正则表达式组。也许您可以使用它并扩展逻辑,如果看到“浏览器”它属于之前的操作系统。

    String in = "osystems::win.2.vm#true AND osystems::win.2.vm#false AND (osystems::win.7.headless#false OR browsers::firefox.version#8)";
    Pattern p = Pattern.compile("(\\w+::\\w+.\\d+.\\w+#\\w+)|(\\w+::\\w+.\\w+#\\d)");
    Matcher m = p.matcher(in);

    while(m.find()) {
        System.out.println(m.group());
    }

输出:

osystems::win.2.vm#true
osystems::win.2.vm#false
osystems::win.7.headless#false
browsers::firefox.version#8