Pattern:正则表达式的编译表示形式.
 Pattern p = Pattern.compile("a*b");  //将给定的正则表达式编译到模式中。
 Matcher m = p.matcher("aaaaab"); //创建匹配给定输入与此模式的匹配器。
 boolean b = m.matches(); //尝试将整个区域与模式匹配。 
 m.find(); /*尝试查找与该模式匹配的输入序列的下一个子序列。此方法从匹配器区域的开头开始,如果该方法的前一次
            *调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。
            */
 m.group();// 返回由以前匹配操作所匹配的输入子序列。 
Matcher 与Pattern  的关系?Pattern p = Pattern.compile("a*b"); 根据API解释,这个方法的意义在于将Regex装载到Pattern(模式)中! 这里Pattern类似与模板的意思吧!个人理解!p.matcher("aaaaab");如何解释这个方法? 让模式和字符串匹配?得出什么结果呢? Matcher(匹配器!?) 我解释不通?p.matcher("aaaaab"); 和
p.matcher("aaaaaaaaaaaab"); 的返回值是一个对象么?  为什么?
 
boolean b = m.matches(); API的解释什么意思,看不明白!  这个区域?在那里!范围是什么? m.group();子序列是什么东西! 这里根据API的解释,Matcher 类似与Collection(容器) 或持有容器.容器中的元素是子序列!但是,问题出来了:子序列如何得到的?来源是哪里?m.find();m.find(int start)如果matcher是容器或持有容器,那么这个方法就类似与iterator.next();list.get(int index);好了先写这么多吧!剩下的什么时候想起什么时候问!谢谢各位了!

解决方案 »

  1.   

    没什么解释的啊!你这不是明白吗!!
    子序列如何得到的?来源是哪里?你不是调用了  Matcher m = p.matcher("aaaaab"); 
    这是就根据  你定义的Regex  得到的group是当前的匹配 
      

  2.   

    其实可以这么说 
    group就是正则表达式里面的()个数
    所以你这里的 groupCount为0
      

  3.   

    当然还要记住group[0]是  这个表达式
      

  4.   

    Pattern p = Pattern.compile("a*b") a*b 是设定的模式
    Matcher m = p.matcher("aaaaab")   Matcher 是一个匹配器,需要给定的模式,需要匹配的内容, 如
         aaaaab,模式与内容都是由Pattern类提供的p.matcher("aaaaab"), p.matcher("aaaaab")这句话就是指定需要匹配的内容
    boolean b = m.matches(); m.matches()就是进行匹配,结果为真, 返回true, 反之 false
    m.find(); 是一个模糊查找,在需要匹配的内容中的某一序列(子序列)与模式匹配,匹配一次,返回一次 
      

  5.   

    p.matcher("aaaaab"); 和 
    p.matcher("aaaaaaaaaaaab"); 的返回值是一个对象么?
      

  6.   

    () 是不是正则表达式里'组'的概念!matcher.group() 是不是只 (pattern.matches(str))str中包含匹配pattern 的个数~!
    例如!
    Pattern p = Pattern.compile("a*b");
    Matcher m = p.matches("aaabaaabaaaaabaabaaaabb");
    int count = m.groupCount();
    System.out.println("count: "+count);
    /*(out:)
    count: 6;
    这个对不?
      

  7.   

    能举个groupcount!=0 的例子么?
      

  8.   

    我按照我的理解说下,
    Pattern就是一个编译正则表达式的模式对象。
    Matcher从意思上讲就是一个匹配器。
    p.matcher就是根据特定的正则模式对象,针对某一字符串得到一个特定的匹配对象。
    matches方法用来判断整个输入字符串是否匹配正则表达式模式。
    find()像迭代器一样从前到后的遍历输入的字符串。find(i)从字符串的i作为搜索起点,进行搜索。
    group是用括号划分的正则表达式,你可以根据0,1,2来引用某个组。
    0代表全部的正则,1表示第一对括号,依次。。
      

  9.   

    我想在'aabaaaabaaaaaabaaaabbaaaaaabaaaaaab'取红色的部分,只用正则要怎么写!
      

  10.   

    方法多的很啊,看你具体要求啊,就你现在这个题目可以
    1:“aaaabb”
    2:(?<=aabaaaabaaaaaab)\\w*?(?=aaaaaabaaaaaab)
    3:a{4}b{2}
    ...
      

  11.   

    2:(?<=aabaaaabaaaaaab)\\w*?(?=aaaaaabaaaaaab)能解释下3个红色的地方是什么意思么!?
      

  12.   

    (?<=exp)零宽断言 匹配exp后面的位置 
    (?=exp) 这个就是匹配exp前面的位置 
    \\w*?: \\w*是零个或者多个字符,后面的?是勉强型量词,该量词匹配满足模式所需的最小字符
      

  13.   


    组的数量是由Pattern.compile("a*b"); 里面的  表达式  决定的 
    正则表达式里有几个()  则数组group[i]!!这里的i就是上面的那个个数 
    如果没有()  则  没有group 关于正则的基础知识  给你推荐个 
    :http://hi.baidu.com/ismayday/blog/item/7f5b86942741d11dd21b708f.html 
      

  14.   

    Pattern p=Pattern.compile("a*b")  其中Pattern.compile(a*b)认为是个匹配模板
    Matcher m 认为是个比较器对象
    Matcher m=p. matcher("aaaab") 认为其中m是个依赖于p这个匹配模板的比较器对象,需要与模板比较的对象是“aaaab”
    m.matches() 进行比较动作,并返回结果。
    m.find() 也是进行匹配,返回结果与matches()方法不同
    这样理解 可以不
      

  15.   

    希望能够帮助到你!
    http://blog.csdn.net/willy2/archive/2009/10/09/4645325.aspx