正则表达式30分钟入门40分钟进阶
文章目录
- 一、正则表达式入门
- 1.1字符组
- 1.1.1字符组中横杠(-)表示区间
- 1.1.2特殊字符需转义
- 1.1.3取反
- 总结
- 1.2快捷方式
- 1.2.1 \d匹配数字 \w匹配字符(特殊字符除外)
- 1.2.2 \s匹配空格
- 1.2.3匹配单词边界
- 1.2.4快捷方式取反
- 1.2.4开始和结束
- 1.2.5任意字符
- 1.2.6 可选字符
- 总结
- 1.3匹配多个数据
- 1.3.1 重复次数
- 1.3.2 重复区间
- 1.3.3 开闭区间
- 1.3.4 匹配所有手机号码
- 1.3.4 匹配所有网址
- 二、正则表达式进阶
- 2.1分组与溯回引用
- 2.1.1分组
- 2.1.2 或者条件
- 2.1.3 非捕获分组
- 2.1.4 回溯引用
- 2.2先行断言
- 2.2.1 正向先行断言
- 2.2.1 反向先行断言
- 2.3后行断言
- 正向后行断言
- 反向后行断言
正则练习网址: https://www.codejiaonang.com/
正则在线测试网站: https://regexr-cn.com/
一、正则表达式入门 1.1字符组 正则表达式中字符组使用中括号([])包裹,作用是匹配中括号里面的元素任意一次。如下:
文章图片
1.1.1字符组中横杠(-)表示区间
字符组中可以使用横杠来表示区间,省去大量写操作。
如图:
文章图片
1.1.2特殊字符需转义
如果需要再字符组内对横杠(包括其他特殊字符)进行匹配,需要再“-”前面加上转义字符:
文章图片
1.1.3取反
如果不想取某一类字符可使用“^”对其取反,如下图:
文章图片
总结
文章图片
1.2快捷方式 1.2.1 \d匹配数字 \w匹配字符(特殊字符除外)
\d
表示匹配所有数字,\w
表示匹配所有字符,如下图:文章图片
文章图片
1.2.2 \s匹配空格
可以使用\s来匹配空格和缩进:
文章图片
1.2.3匹配单词边界
匹配内容中完整的单词:
文章图片
1.2.4快捷方式取反
将
\W
为\w
的取反,\D
为\d
的取反,\S
为\s
的取反。如:文章图片
1.2.4开始和结束
目标前使用
^
可以匹配开始位置字符,在目标后使用$
可以匹配结束位置的字符:文章图片
1.2.5任意字符
使用点(.)可以匹配任意字符(除换行符即
\n
):文章图片
1.2.6 可选字符
匹配一个可以出现也可以不出现的字符:
文章图片
文章图片
总结
文章图片
1.3匹配多个数据 1.3.1 重复次数
在所需要匹配的字符后面加上大括号,里面填充数字,这个数字表示重复的次数:
文章图片
1.3.2 重复区间
使用大括号内的数字区间可匹配响应范围个数的字符:
文章图片
如果在后面加上了
?
,就会只匹配区间开始数量的字符,在这里?
表示非贪婪模式:文章图片
如果大括号使用前闭后开的形式,表示匹配第一元素开始以上的内容:
文章图片
1.3.3 开闭区间
+
相当于{1,}
,*
相当于{0,}
:文章图片
文章图片
1.3.4 匹配所有手机号码
文章图片
1.3.4 匹配所有网址
文章图片
二、正则表达式进阶 2.1分组与溯回引用 2.1.1分组
在正则表达式中还提供了一种将表达式分组的机制,当使用分组时,除了获得整个匹配。还能够在匹配中选择每一个分组。
要实现分组使用
()
即可。如下:文章图片
文章图片
2.1.2 或者条件
使用分组的同时还可以使用 或者(or)条件:
文章图片
2.1.3 非捕获分组
有时候,我们并不需要捕获某个分组的内容,但是又想使用分组的特性。
这个时候就可以使用非捕获组
(?:表达式)
,从而不捕获数据,还能使用分组的功能。文章图片
2.1.4 回溯引用
那如果想让后面分组的正则和第一个分组的正则匹配同样的数据
可以使用分组的回溯引用,使用
\N
可以引用编号为N
的分组,如下:文章图片
文章图片
2.2先行断言 2.2.1 正向先行断言
正向先行断言:
(?=表达式)
,指在某个位置向右看,表示所在位置右侧必须能匹配表达式,但只提取该位置的数据:文章图片
2.2.1 反向先行断言
反向先行断言(?!表达式)的作用是保证右边不能出现某字符
文章图片
2.3后行断言 正向后行断言
正向后行断言:
(?<=表达式)
,指在某个位置向左看,表示所在位置左侧必须能匹配表达式反向后行断言
【正则表达式30分钟入门40分钟进阶】反向后行断言:
(?,指在某个位置向左看,表示所在位置左侧不能匹配表达式
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 正则匹配
- 正则表达式中增加变量
- sed及正则表达式
- Java8|Java8 Collections.sort()及Arrays.sort()中Lambda表达式及增强版Comparator的使用
- Java正则表达式的应用
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- Python--之正则表达式一基础
- 200天自律计划-106day
- Excuse|Excuse me!(今早高峰的广州三号线,竟然被一瓶水逼停30分钟)