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

devtools/2024/10/20 4:04:30/

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/devtools/127187.html

相关文章

达梦数据库性能优化

1、SQL执行计划 拿到一条SQL的时候&#xff0c;首先要下达梦手册中提出的有效SQL规范&#xff0c;及是否命中了特殊OR子句的不规范&#xff0c;是否用了复杂的正则表达式&#xff0c;避免重复很高的索引&#xff0c;UINON ALL 是否可以替换UNION操作等,某些场景INSTR函数导致的…

【如何获取股票数据10】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股历史分时KDJ数据获取实例演示及接口API说明文档

最近一两年内&#xff0c;股票量化分析逐渐成为热门话题。而从事这一领域工作的第一步&#xff0c;就是获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息&#xff0c;这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的主要任…

软考-软件设计师(10)-专业英语词汇汇总与新技术知识点

场景 以下为高频考点、知识点汇总。 软件设计师上午选择题知识点、高频考点、口诀记忆技巧、经典题型汇总: 软考-软件设计师(1)-计算机基础知识点:进制转换、数据编码、内存编址、串并联可靠性、海明校验码、吞吐率、多媒体等: 软考-软件设计师(1)-计算机基础知识点:进制…

开源AI网络爬虫工具Crawl4AI

引言 在信息化时代&#xff0c;网络爬虫作为从互联网中提取信息的重要工具&#xff0c;扮演着至关重要的角色。Crawl4AI作为一款开源AI网络爬虫工具&#xff0c;凭借其功能强大和易用性&#xff0c;受到了广泛关注。本文将详细探讨Crawl4AI的定义、特点、优势&#xff0c;以及…

汽车开发流程管理工具赋能安全与质量

随着数字化、人工智能、自动化系统及物联网技术的迅速发展&#xff0c;工程驱动型企业正面临重大转型挑战&#xff0c;亟需加速并深化其变革步伐。众多企业正试图通过采用基于模型的系统工程(MBSE)、产品线工程(PLE)、ASPICE、安全、网络安全、软件定义汽车、敏捷和精益开发实践…

矢量网络分析仪工作原理

矢量网络分析仪&#xff08;Vector Network Analyzer&#xff0c;VNA&#xff09;是一种用于测量射频&#xff08;RF&#xff09;和微波信号的仪器。它主要用于测量器件的S参数&#xff08;散射参数&#xff09;&#xff0c;包括幅度和相位响应&#xff0c;以评估和分析射频元件…

Python、C#、C++音频处理库

Python、C#、C音频处理库 Sounddevice: Python音频处理库 https://github.com/spatialaudio/python-sounddevice/ https://pypi.org/project/sounddevice/ https://python-sounddevice.readthedocs.io/en/0.5.1/ https://python-sounddevice.readthedocs.io/en/0.5.1/exampl…

解决mac更新后无法连接git问题

问题描述 在Mac电脑上使用git克隆命令时出现报错&#xff1a; no matching host key type found. Their offer: ssh-rsa问题原因 苹果更新了ssh默认不再支持ssh-rsa导致。 问题解决 修改ssh默认config配置文件&#xff0c;再重新生成rsa密钥 sudo nano ~/.ssh/config写入文本…