第二十七章 正则表达式

第二十七章 正则表达式

1.正则快速入门


(1)

(2)

(3)

(4)




加个编号

如果我们想要快速提取以下内容的IP地址


2.正则需求问题




3.正则底层实现1




4.正则底层实现2

查找到第一个字符1998的过程

查找到第二个字符1999的过程

5.正则底层实现3

加了一个括号之后



6.正则转义符




注意:如果这里没有转义字符,编译是错误的

下面如果我们只写一个 . ,表示我们要找到所有字符

如果要找到 . 本身,则需要加上转义字符



7.正则字符匹配


+表示一个或多个的意思

8.字符匹配案例1




















9.字符匹配案例2





















11.选择匹配符(|)



12.正则限定符



{n}



下面这个表示要出现一个任意的数字,出现两次


{n,m}

尽可能匹配多的








+(1个或者多个)





*(0个或者多个)


?(0个或者1个)




13.正则定位符

^ 指定起始字符



这里一个都匹配不到,因为不是以数字开头的




$ 指定结束字符




\\b 匹配目标字符串的边界





\\B 匹配目标字符串的非边界




14.捕获分组



(pattern)





(? pattern)




15.非捕获分组


(?:pattern)





(?=pattern)


(?!pattern)



16.非贪婪匹配





17.正则应用实例

1.汉字

这里的中文的范围用16进制来表示


2.邮政编码


3.QQ号码


4.手机号码


18.正则验证复杂URL
















19.Pattern类






20.Matcher类


start/end




matches




replaceAll




21.反向引用


22.反向引用案例











23.结巴去重案例






就是:虽然上面的正则表达式是匹配到的连续重复的字,但是捕获的是圆括号里面的内容, 所以捕获的组里面的字只有一个,因此使用replaceAll("$1")的意思是:用捕获到的单个字去替换匹配到的多个字

24.替换分割匹配









25.本章练习01

. 在小括号中表示匹配任意字符,所以要写成\.

这里直接用了String自带的matches方法

加一个^和$更好

前面不加也可以的原因是

26.本章练习02



这里有个问题,下面这种写法也是正确的

下面在做一下改进

27.本章作业03

/abc这部分可以有0个或者多个


相关推荐
AI你一生一世1 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影1 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯2 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
海的透彻6 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat6 小时前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
后台模板学习7 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one7 小时前
算法--构造
java·数据结构·算法
SL_staff7 小时前
制造业订单交付崩盘?用四层协同框架重建交付可信度(技术实践)
java·产品·全栈
SL_staff8 小时前
打破风控迭代死循环:用决策编排重构业务与技术协作链路
java·产品·全栈
Mikko79 小时前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端