马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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));
- }
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |