Pattern和Matcher对象常用方法

转载的:https://yq.aliyun.com/ziliao/412887

1.最简单的模式匹配判断

    Pattern.matches(regex, str),它等同于Pattern.compile(regex).matcher(str).matches();

2.按模式分割字符串

    Pattern.compile(regex).split(str),它等同于str.split(regex)

3.Matcher对象

    Matcher m = Pattern.compile(regex).matcher(str)

    m.maches(),对整个字符串进行匹配,整个字符串都匹配才返回true.

    m.lookingAt(),字符串(str)以指定模式(regex)开始返回true

    m.find(),字符串(str)在任意位置指定匹配模式(regex)就返回true

    在执行过上述返回boolean值的方法之后,可以执行m.start()、m.end()、m.group()返回匹配细节

    m.start()匹配字符串在母串中的index

    m.end()匹配字符串的最后一个字符在母串中的index+1

    m.group()匹配到的字符串

    如果指定模式(regex)中包含分组(用小括号扩起来的部分),start、end和group方法也可以用参数指定获取哪个分组的细节。容易忽略的是,整个模式自身算是第0个分组。例如:

    m.start() == m.start(0);

    m.end() == m.end(0);

    m.group() == m.group(0);

    Matcher m = Pattern.compile("([a-z]+)(\\d+)").matcher("fasf2334");

    m.find();

    m.start();//匹配到整个字符串,开始索引是0

    m.start(0);//等于m.start(),结果也是0

    m.start(1);//匹配到第一个模式[a-z]+,也就是字符串“fasf”,所以开始索引是0

    m.start(2);//匹配到第二个模式\d+,也就是字符串“2334”,所以开始索引是4

4.m.find()方法

    由于m.find()方法可以匹配模式在字符串中任意位置的出现,所以可能会匹配到多次。

    Matcher m = Pattern.compile("\\d+").matcher("fasf2334ss22s");
    while (m.find()) {
        System.out.println(m.group());
        System.out.println(m.start());
        System.out.println(m.end());
        System.out.println();
    }

    输出结果为:

    2334

    4

    8

    22

    10

    12

以上是Pattern和Matcher对象常用方法的全部内容,在云栖社区的博客、问答、云栖号、人物、课程等栏目也有Pattern和Matcher对象常用方法的相关内容,欢迎继续使用右上角搜索按钮进行搜索学习笔记 ,以便于您获取更多的相关知识。

猜你喜欢

转载自blog.csdn.net/u013732378/article/details/86231430