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

ops/2024/10/22 16:04:51/

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));}}
}

http://www.ppmy.cn/ops/127608.html

相关文章

Element-plus中的表单验证

一、属性绑定 在 Element-plus 的 Form 组件中&#xff0c;需要对用户的输入进行规范验证时&#xff0c;可使用 rules 属性对验证规则做绑定。并在 el-form-item标签上设置 prop 属性的键值。 <template><div><el-form :model"ruleForm"style"…

文本数据可视化

文字是传递信息最常用的载体。在当前这个信息爆炸的时代,人们接收信息的速度已经小于信息产生的速度,尤其是文本信息。当大段大段的文字摆在面前,已经很少有耐心去认真把它读完,经常是先找文中的图片来看。这一方面说明人们对图形的接受程度比枯燥的文字要高很多,另一方面…

物联网之温湿度传感器模块、arduino、esp32

MENU 原理硬件电路设计软件程序设计 原理 无论是工业领域还是日常生活&#xff0c;温度和湿度一直都是两个比较重要的指标&#xff0c;DHT11和DHT22是DHTxx系列中使用最广泛的两种传感器。它们有着相同的引脚&#xff0c;用法一致。 如果拆下传感器的外壳&#xff0c;其实里面…

秩序的构建:探寻排序算法的奥秘,开启数据世界的诗篇

目录 一、排序算法的基本概念 二、常见排序算法的运行方式和 C 语言实现 1. 冒泡排序 2. 选择排序 3. 插入排序 4. 归并排序 5. 快速排序 三、排序算法的深度分析 1. 时间复杂度 2. 空间复杂度 3. 稳定性 四、总结 五、其他 一、排序算法的基本概念 排序算法是指…

数字孪生城市:智慧城市的未来蓝图

在当今数字化时代&#xff0c;智能技术的广泛应用正在改变人们的生活和工作方式。数字孪生城市作为未来新型智慧城市演进的重要方向&#xff0c;数字孪生城市是一种将城市物理世界的各个方面转化为数字形式的技术&#xff0c;通过网络空间与物理世界之间的实时数据交换和仿真分…

界壁0.1

为了实现全面而强大的安全系统,我们进一步完善代码,确保每个功能模块都尽可能地健壮和高效。以下是一个更完善的版本,涵盖了所提到的功能: 功能概述 请求 root 权限:确保脚本以 root 权限运行。 配置防火墙规则:自动获取所需权限,配置 iptables 规则以记录和拦截流量。…

sqoop搭建教程

1.上传并解压 tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz2.修改配置文件 cd sqoop-1.4.6/conf/mv sqoop-env-template.sh sqoop-env.shvim sqoop-env.sh3.配置环境变量 vim /etc/profilesource /etc/profile4.添加jar包 cd /usr/local/soft/sqoop-1.4.6/lib

linux查看占用高进程所在目录

1.遇到的问题 服务器被攻击&#xff0c;nmon流量占用很高&#xff0c;可以使用如下命令查看应用所在目录 如果你想要查看特定进程的完整路径&#xff0c;可以使用以下命令&#xff1a; readlink -f /proc/<pid>/exe 2.解决办法 删掉文件&#xff0c;之后kill 掉这个进程…