F=1|a         H=(*F)*     T=FH
G=(+T)*
请问TG的表达试用反向引用 怎么表达?
F=(i|a)
T=(i|a)(\\*\1)*   这样可以吗?

解决方案 »

  1.   

    G要引用T T引用F 就是引用套引用
    这个我不大确定怎么写;
    G=(\\+(i ¦a)(\\*\1))*
    这样是不是就不是引用F了呢?该怎么办呢?
      

  2.   


    G=(\\+(i ¦a)(\\*\\2))* 我不会了,但是按照你的思路来,应该改为这样
      

  3.   

    可以这样理解:
    G=(+T)*
     =(+FH)*
     =(+F(*F)* )*得到以上表达式 现在只有F=(i ¦a) 如何用F表示以上的表达式?
      

  4.   


            String G = "(+F(*F)* )*";
            String f = "a";
            String g = "+a*a*a";
            String F = "i|a";
            String p = "(\\+(i|a)(\\*\\2)*)*";
            System.out.println(g.matches(p));
            System.out.println(f.matches(F));
      

  5.   

    G=\\+(i ¦a)\\(\\*\\1\\)*\\)*    这样写对不对? 题目中的* +   在()里面的为普通字符;()外面的是闭包
      

  6.   


    我没怎么呀,只是咱俩的想法老是有冲突~
    你这么写的话,匹配这样的~因为你红色不分是普通的括号,所以后面的\\)*匹配,这个括号)出现0次或者多次
            String g = "+a(*a))";//匹配这样的~这应该不是你要的吧~
            String p = "(\\+(i|a)\\(\\*\\2\\)*)*";
            System.out.println(g.matches(p));
      

  7.   

    现在我把TG 写出来 
    你看看对吗?
    TG=FH G
      =F   (*F)*  G
      =F(*F)*   (+F(*F)*)*得到以上表达式 现在只有F=(i ¦a)  
    要怎样写以上表达式?
    (i|a)\\(\\*\\1\\)*    (    \\(\\+\\1\\(\\*\\1\\)*\\)      )*你说咱们能不能把 (*F)*也 做为一个引用组呢?
    这写的多麻烦啊
      

  8.   


    //我最后一次挑战了眼睛都花了
    String g = "a(*a)(+a(*a))";
            String p = "(i|a)(\\(\\*\\1\\))*(\\(\\+\\1\\2*\\))*";
    结果为true
      

  9.   


     String g = "a(*a))(+a(*a)))";
            String p = "(i|a)(\\(\\*\\1\\)*)(\\(\\+\\1\\2\\))*";
            System.out.println(g.matches(p));