如何用正则表达式匹配下面的串?obj(
   Name '测试test(hehe))'
   Must ( a $ b $ c)
   May  ( d $e ) )obj(
   Name 'objname2'
   Must (a $ c))也就是匹配obj(),不知道怎么弄,
觉得麻烦的地方
(1)Name的单引号里面可能有括号
(2)Must和May属性不是必须,可能没有,正则表达式能做到这个吗?
感觉够呛,请帮忙看看,谢谢

解决方案 »

  1.   

    好辛苦,可能加空格的地方太多了 \\s*加的累死了
    你写的两个例子都能通过。java的正则表达式还是繁琐了点。\\太多。还是MUD的表达式好写,呵呵
    public class TestRegular 
    {
    public static void main(String[] args) 
    { Pattern p2=Pattern.compile("obj\\s*\\(\\s*Name\\s*'[^']+'\\s*((Must\\s*\\([\\w\\s\\$]+\\s*\\))|)\\s*((May\\s*\\([\\w\\s\\$]+\\))|)\\s*\\)"); Matcher m2=p2.matcher("obj(Name 'objname2' Must ( a $ b $ c) May  ( d $e ) )"); System.out.println(m2.matches());
             }
    }