欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Java高级Day54-正则表达式底层实现

Java高级Day54-正则表达式底层实现

2024/10/25 17:25:34 来源:https://blog.csdn.net/2301_78630849/article/details/143061727  浏览:    关键词:Java高级Day54-正则表达式底层实现

140.正则表达式

正则表达式底层实现

介绍:一个正则表达式,就是用某种模式去匹配字符串的一个公式

public class TestJava {public static void main(String[] args) {String content = "11943wd2342drwf4235";
​//目标:匹配所有四个数组//1、\\d表示一个任意的数字String regStr = "\\d\\d\\d\\d";String regStr2 = "(\\d\\d)(\\d\\d)";//2.创建模式对象Pattern pattern = Pattern.compile(regStr);//3.创建匹配器//说明:创建匹配器matcher,按照正则表达式的规则去匹配 content字符串Matcher matcher = pattern.matcher(content);
​//4.开始匹配/**** matcher.find() 完成的任务 (考虑分组)* 什么是分组,比如(\d\d)(\d\d),小括号就是分组** 1.根据指定的规则,定位满足条件的子字符串(比如1998)* 2.找到后,将子字符串的开始索引记录到 matcher对象的属性 int[] groups*   2.1 groups[0] = 0 ,把该字符串的结束的索引+1的值记录到 groups[1] = 4*   2.2 记录1组()匹配到的字符串 groups[2] = 0 groups[3] = 2*   2.3 记录2组()匹配到的字符串 groups[4] = 2 groups[5] = 4* 3.同时记录oldLast 的值为 子字符串的结束的索引+1的值 即4,即下次执行find的方法时,从4开始** matcher.group(0)** 源码:* public String group(int group) {*         if (first < 0)*             throw new IllegalStateException("No match found");*         if (group < 0 || group > groupCount())*             throw new IndexOutOfBoundsException("No group " + group);*         if ((groups[group*2] == -1) || (groups[group*2+1] == -1))*             return null;*         return getSubSequence(groups[group * 2], groups[group * 2 + 1]).toString();*     }*  1.根据 groups[0]=0 和 groups[1]=4 的记录的位置,从content开始截取子字符串返回*  就是[0,4)*/while (matcher.find()) {//小结//1.如果正则表达式有() 即分组//2.取出匹配的字符串规则如下//3.group(0) 表示匹配到的字符串//4.group(1) 表示匹配到的字符串的第一组字串//4.group(2) 表示匹配到的字符串的第二组字串System.out.println("找到:" + matcher.group(0));System.out.println("第1组()匹配到的值=" + matcher.group(1));System.out.println("第2组()匹配到的值=" + matcher.group(2));}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com