import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class xt{ 
  public static void main(String args []) { 
  
   String er="^aa";
   String s="aabbcc";
  
   Pattern pat=Pattern.compile(er);
   Matcher mat=pat.matcher(s);
   boolean bo=mat.matches();
   System.out.println(bo);
  
   System.out.println(s.matches(er));

解决方案 »

  1.   

    boolean bo = mat.find();
      

  2.   


         boolean result=Pattern.matches(er, s); 
      

  3.   

    public class xt{ 
      public static void main(String args []) { 
      
      Pattern p = Pattern.compile("^aa");
            Matcher m = p.matcher("aabbcc");
            while (m.find()) {
                System.out.println(m.group());
            }

      

  4.   

    没错,用find()可以,但谁能解释一下吗?
    第一种写法错在哪里?
      

  5.   

    match是符合关系
    find是包含关系
    match要求你的字符串s完全满足正则表达式er
    find是要求你的字符串s中包含满足正则表达式er的子字符串
    这样清楚么?
      

  6.   

    如楼上 看javadoc
    find的是subsequence即子序列
      

  7.   

    boolean bo=mat.matches(); 
    看下 API 可以看到 该方法 说明"尝试将整个区域与模式匹配。"
    现在 看 正则"^aa" 与source "aabbcc"
    只能匹配aa,当然 不能全部匹配咯,所以返回 false,
    而 find 方法 说明"尝试查找与该模式匹配的输入序列的下一个子序列"
    白话来讲就是:"找找 这个String有没有符合的,如果有,就返回true"