如何快速记忆正则表达式
分类记忆法:(来自极客时间 每日一课 https://time.geekbang.org/dailylesson/detail/100044029 )
我们把元字符分成如下这几类
- 基础
- 空白符
- 范围
- 边界
- 量词
基础
.
任意字符(换行除外)\d
任意数字\D
任意非数字\w
任意数字字母下划线\W
数字、字母、下划线以外的任意字符\s
任意空白符\S
任意非空白符
空白符
\r
回车符\n
换行符\f
换页符\t
制表符\v
垂直制表符
量词
*
含义:0 到多次+
含义:1 到多次?
含义:0 到 1次{m}
含义:出现 m 次{m,n}
含义:m 到 n次{,n}
其中 m 不写代表 0,至多 n次{m,}
其中 n 不写代表无穷大,至少 m 次
范围
|
或,如 ab|bc 代表 ab 或 bc[...]
多选一,括号中任意单个元素[a-z]
匹配 a 到 z 之间任意单个元素(按 ASCII 表,包含 a,z)[^...]
取反,不能是括号中的任意单个元素
举例验证手机号
1[3456789]\d{9}
1[3-9]\d{9}
1[^012]\d{9}
边界
^
匹配行的开始,多行模式是,可以匹配任意行开头$
匹配行的结束,多行模式时,可以匹配任意行结尾\b
匹配单词边界\A
仅匹配整个字符串的开始,不支持多行模式\Z
仅匹配整个字符的结束,不支持多行模式
贪婪&非贪婪
- 贪婪:表示次数的量词,默认是贪婪的,默认尽可能多地去匹配
- 非贪婪:“数量” 元字符后加
?
(英文问号) 找出长度最小且满足要求的
环视
X(?<=Y)
匹配前面是 Y 的 XX(?<!Y)
匹配前面不是 Y 的 XX(?=X)
匹配后面是 Y 的 XX(?!Y)
匹配后面不是 Y 的 X
子组
- (正则) 将 regex 保存成一个子组
- (?p<name>正则) 命名子组,将 regex 保存成名称为 name 的子组
- (?:正则) 仅分组,不保存这个子组
- \分组编号 重复每个子组
练习正则 网站
关于极客返利
极客返利 是由我个人开发的一款网课返利、返现平台。包含 极客时间返现、拉勾教育返现、掘金小册返现、GitChat返现。目前仅包含这几个平台。后续如果有需要可以考虑其他平台。 简而言之就是:你买课,我返现。让你花更少的钱,就可以买到课程。
版权许可
本作品采用 知识共享署名 4.0 国际许可协议 进行许可。转载无需与我联系,但须注明出处,注明文章来源 如何快速记忆正则表达式