Java正则表达式

最近刚开始学习Java,随便记一点学习笔记

Java正则表达式可参考官网API帮助文档中的Pattern类,

以下是常用的


(相关资料图)

注意,正则表达式中表示交集必须要&&而不是一个&,后者仅为普通符号&

Java中\需要用转义\\表示

表示并集:|写在方括号外面表示并集,如果在方括号里面则不用写|

忽略大小写:

如果只忽略B的大小写

练习

手机号匹配

注意上述仍不严谨

座机电话号码

020-2324242,  02122442,   027-42424,   0712-3242434

邮箱号码

匹配如下邮箱:

3232323@qq.com: mailto:3232323@qq.com

zhangsan@itcast.cnn: mailto:zhangsan@itcast.cnn

dleie0e9@163.com: mailto:dleie0e9@163.com

dleicee@pci. com.cn

较严格的身份证校验

前六位开头非0:[1-9]\d{5}

年只能18 19 20 开头: (18|19|20)

年后半段任意数字出现两次:    \\d{2}

月份01 ~ 09 10 11 12:    (0[1-9]|1[0-2])

日期01 ~ 09 1019 2029 30 31:(0[1-9]|[12]\\d|3[01])

后面4位,任意数字出现3次,最后一位可为X或x :    \\d{3}[\\dXx]

分享:插件any-rule提供了常用情况的正则表达式模板

idea可按alt+鼠标 矩形选中

匹配段落中的文本

为了找到所有的匹配信息应采用循环的方式

带有选择性的数据爬取

文本:

Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台。

需求1: 爬取版本号为8,11,17的Java文本,但是只要Java,不显示版本号。

需求2:爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11 Java17 Java17

需求3:爬取除了版本号为8,11.17的Java文本

贪婪爬取和非贪婪爬取

贪婪爬取:在爬取数据的时候尽可能多获取数据非贪婪爬取:尽可能少获取

例:abbbbbbbbbbbbb正则表达式:ab+

贪婪爬取:abbbbbbbbbbbbb非贪婪爬取:ab

Java默认为贪婪爬取

只写+和*表示贪婪匹配

+? 非贪婪匹配

*? 非贪婪匹配

分组括号

用()表示分组

每组是有组号的,也就是序号

规则1:从1开始连续不间断

规则2:以左括号为基准,最左边的是第一组,其次为第二组,以此类推

捕获分组

//组号:表示把第X组的内容再拿出来用一次

练习:口吃替换

需求:

将字符串:我要学学编编编编程程程程程程。

替换为:我要学编程

捕获分组:后序还要继续使用本组的数据

正则内部使用\组号

正则外部使用$组号

非捕获分组:分组之后不需要再使用本组数据,仅仅是把数据括起来

非捕获分组不占用组号

以下写法是错误的:

感谢Up主@LuckyPuppy514制作的Markdown转B站专栏油猴脚本

关键词: Java 正则表达式 MARKDOWN 学习笔记 IDEA A_PI 电话号码 以此类推