Pattern和Matcher对象常用方法

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值