String sTemp=String1.substring(0,String1.indexOf("A2"));
if(sTemp.indexOf("A1")>-1){
   //A1出现在第一次A2出现之前
}else{
  //A1没有出现在第一次A2出现之前
}

解决方案 »

  1.   

    .*A1.*A2.*
    能匹配就说明A2之前出现了A1
      

  2.   

    To  keyong19ryry(随风逐月) 
    方法虽然是可以的,但由于这只是一部分的需求,所以还需要把它结合入正则表达式。pankun(剑神一笑 如履薄冰) 
    试着用.*A1.*A2.*来解析,
    String1="abcde  A1 fg A2"
    String2="ab A2 cde  A1 fg A2"
    出来都是True -- 因为String2中第2个A2前确实有A1。可我希望得到的判断是
    字符串的 第 一 个 A2 前是否有A1出现。
      

  3.   

    一行20分,200分成交!String s1="abcde  A1 fg A2";
    String s2="ab A2 cde  A1 fg A2";
    String regExceptA2="(([^A]*)|(([^A]*A[^2])*))";
    String reg=regExceptA2+"A1"+regExceptA2+"A2"+".*";
    Pattern p=Pattern.compile(reg);
    Matcher m;
    m=p.matcher(s1);
    System.out.println(m.matches());
    m=p.matcher(s2);
    System.out.println(m.matches());
      

  4.   

    那么,如果A1和A2不是固定的字符串,而是某种具有特定格式的字串,例如
    A1=A1[^1]*1
    A2=A2[^2]*2
    那该如何判断?
      

  5.   

    /**
      检查字符串是否出现 和before和after匹配的子串,
      而且before匹配的子串在第一个after匹配子串前出现.
      overlapped说明两个子串是否可以重叠.
      str: 要匹配的字符串
      before: 正则表达式
      after:  正则表达式
      overlapped:是否可以重叠
      */
      static boolean pattern(String str,String before,String after,boolean overlapped){
      Pattern p1=Pattern.compile(before);
      Pattern p2=Pattern.compile(after);
      Matcher m1=p1.matcher(str);
      Matcher m2=p2.matcher(str);
      if(overlapped) return(m1.find()&&m2.find()&&m1.start()<=m2.start());
      else return(m1.find()&&m2.find()&&m1.end()<m2.start());
      }
      

  6.   

    先看看《Java正则表达式详解》
    http://www.ccw.com.cn/htm/app/aprog/01_7_31_4.asp
      

  7.   

    结贴!
    treeroot(根根) ,另开贴给分!
      

  8.   

    treeroot(根根),请去
    http://community.csdn.net/Expert/TopicView.asp?id=3627930
    接分:)