5个小功能掌握正则表达式的使用

news/2024/6/18 21:44:47 标签: 正则表达式

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~

这篇文章通过实现5个小功能,来讲述在Java中如何使用正则。

Java中如何使用正则

Java中正则相关类位于java.util.regex包下,主要使用2个类,如下:

4d6c482019b5d06a1ce5e038f3bca04b.png

Pattern类:

Pattern是正则表达式regex的编译表示形式

0c52f1fe9a87daf25cd0438ef0ea4339.png

Matcher类:

通过解释Pattern对输入的字符串input执行匹配操作的引擎

ca34b12cf63d1d844b0ff08381827fd2.png

注意:在Java代码中转义字符“\”要写成“\\”才表示一个“\”。

比如regex=\d,在Java代码中应该写成“\\d”。

下面我们通过几段Java代码来感受一下,除了功能1的代码是完整代码外,其余功能代码,我只给出main()方法。

功能1:判断给定的字符串是否与给定的正则表达式完全匹配

884a27c86d636bbb692f72dbf8e83638.png

说明:matches()方法,尝试将整个区域与模式匹配。

regex=\w+表示匹配至少一个字母或者数字或下划线[a-zA-z0-9_],所以字符串“HelloWord”与这个正则完全匹配。

功能2:判断给定的字符串是否包含至少一个数字

dec522f1a3daad0b9696a242753022b0.png

说明:find()方法,尝试查找与该模式匹配的输入序列的下一个子序列,如果存在多个子串,find()方法能找到所有符合条件的子串。

regex=\d+表示匹配至少一个数字,所以字符串“HelloWord,666!”可以匹配这个正则。

4、功能3:从给定的字符串里找出所有的数字子串

5aed57d976e06a08979df7f57719ecba.png

说明:group()方法,返回在以前匹配操作期间由给定组捕获的输入子序列。即通过find()方法找到的符合条件的子串可以通过group()方法获取。

regex=\d+表示匹配至少一个数字,字符串“HelloWord,666,888!”可以匹配这个正则2次,通过group()方法获取到了匹配的数字666与888。

功能4:把给定的字符串里的所有数字替换为星号“*”

0cd7d86b17d5eee1bdfce3b8a98fb6f3.png

说明:replaceAll()方法,替换模式与给定字符串相匹配的输入序列的每个子序列。即通过replaceAll()方法把符合条件的子串替换成replaceAll()方法中的参数。

regex=\d+表示匹配至少一个数字,字符串“Beijing 666,China 888!”可以匹配这个正则2次,通过replaceAll(“*”)方法把匹配的数字666与888替换成了***,因此替换后的字符串为“Beijing ***,China ***!”。

功能5:把给定的字符串通过正则表达式进行拆分

9352a6765f78d93567f525a7cc2b2a7d.png

说明:String的split()方法,根据给定正则表达式的匹配拆分此字符串。

字符串“Beijing010shanghai021tianjin022!!!”可以匹配3次regex=\d+,通过split()方法按数字进行拆分,拆分出4组内容,分别是“Beijing”, “shanghai”, “tianjin”, “!!!”。

通过以上5个功能代码段,对Java开发中如何使用正则表达式应该有了一个较为清晰的认识。


http://www.niftyadmin.cn/n/5044932.html

相关文章

JS-ECharts-前端图表 多层级联合饼图、柱状堆叠图、柱/线组合图、趋势图、自定义中线、平均线、气泡备注点

本篇博客背景为JavaScript。在ECharts在线编码快速上手,绘制相关前端可视化图表。 ECharts官网:https://echarts.apache.org/zh/index.html 其他的一些推荐: AntV:https://antv.vision/zh chartcube:https://chartcub…

<图像处理> Kitchen-Rosenfeld角点检测

Kitchen-Rosenfeld角点检测原理 Kitchen和Rosenfeld认为角点是那些边缘曲线曲率和梯度幅值都很大的点,因此他们提出了使用曲率k与梯度幅值g的乘积来计算角点响应函数C的方法: C k g k ( I x 2 − I y 2 ) 1 / 2 I x x I y 2 I y y I x 2 − 2 I x …

一个电子信息工程学生的历程和内心感想

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、我对大学三年专业课程的理解二、我为什么本科选择研究嵌入式这个方向?1.可以把理论变为实际应用——兴趣是最好的老师。2.嵌入式方向可以打的比赛非…

视频太大怎么压缩变小?把视频变小这样做

随着科技的不断发展,视频已经成为了我们日常生活中不可或缺的一部分,然而,有时候我们会遇到视频体积太大,无法上传或者传输的问题,那么,如何将过大的视频压缩变小呢?下面就给大家分享几个方法&a…

redux使用,相当于vue中的vuex

实现上述功能: 下载redux, npm install redux 新建一个redux文件夹,里面新建一个count_reduce.js和store.js文件 count_reduce.js export default function count(pre0,action){let {type,data} actionconsole.log(action,action)switch(type){ca…

【刷题】2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com) 初步想法,x y2 − z2(yz)(y-z) 即xa*b,ayz,by-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是(r-l)*x&am…

9.22数电(触发器寄存器一些电路分析reg的思考)

用作存储元件的电路 新输入的信号可能使电路保持同样的状态也可能使电路进入另一种新的状态 输入信号置位与复位可以用于改变构成存储元件的电路状态 RS锁存器 通过或非门就是说输入信号中有一个是1,输出就的是0 在RS0时,RS对或非门的结果无影响&am…

vue3项目发布后修改配置文件仍然生效

使用json,并且要用ajax来加载;应用过程中也有一些注意的问题。 有关“vue3项目发布后修改配置文件仍然生效”问题,之前做过一篇笔记《vue项目读取全局配置》。但事实上,那篇笔记的步骤,只解决了项目发布后&#xff0c…