find方法疑惑,有解释源码的没

小小白每天不奋斗 2018-09-25 05:47:51
package zhenze;

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

/*
* 获取功能:
* 获取下面这个字符串中由三个字符组成的单词
* da dajidj djj iioio opop iop
*
* */
public class fenge {
public static void main(String[] args) {
//定义字符串
String s="da dajidj djj iioio opop iop";
//规则
String reg="\\b\\w{3}\\b";
//把规则编译成模式对象
Pattern p=Pattern.compile(reg);
//通过模式对象得到匹配器对象
Matcher m=p.matcher(s);
//调用匹配器对象的功能
//通过find方法就是查找有没有满足条件的子序列
boolean flag=m.find();
System.out.println(flag);
//如何得到值呢?
String ss=m.group();
System.out.println(ss);
//再次调用find方法,find方法会接着上次find之后的继续找?为什么不是重新从头找?

flag=m.find();
System.out.println(flag);
//如何得到值呢?
ss=m.group();
System.out.println(ss);

//一定要先find.然后再group
while(m.find()) {
System.out.println(m.group());
}


}
}
...全文
228 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
nayi_224 2018-09-26
  • 打赏
  • 举报
回复
“再次调用find方法,find方法会接着上次find之后的继续找?为什么不是重新从头找?”———— 这是find方法的第一行。
    public boolean find() {
        int nextSearchIndex = last;
“一定要先find.然后再group”————
    
    int first = -1, last = 0;
public String group(int group) {
        if (first < 0)
            throw new IllegalStateException("No match found");
first会在执行一次find后重新初始化。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧