正则表达式
2021-05-17 17:54:33 47 举报
AI智能生成
正则表达式正则表达式正则表达式正则表达式
作者其他创作
大纲/内容
能做什么
一句话:校验,查找,替换文本
细分
校验数据的有效性
如:校验手机,邮箱
查找符合要求的文本内容
如:查找符合规则的号码
对文本进行切割,替换等操作
如:使用连续的空白符切割字符串
元字符
特殊单字符
.
任意字符(换行除外)
\d 任意数字 \D 任意非数字
\w 任意字母数字下划线 \W 任意非字符数字下划线
\s 任意空白符 \S 任意非空白符
空白符
\r 回车符
\n 换行符
\f 换页符
\t 制表符
\v 垂直制表符
\s 任意空白符
范围
|
表示"或",如 ab|bc 代表ab或bc
[...]
多选一,括号中任意单个元素
[a,z]
匹配a到z之间任意单个元素(包含a,z)
[^...]
取反,不能是括号中任意单个元素
量词
*
0到多次
+
1到多次
?
0到1次,如colo?r
{m}
出现m次
{m, }
出现至少m次
{m,n}
m到n次
断言(Assertion)
单词边界
\b 匹配单词边界
行的开始/结束
^ 匹配行的开始
多行模式时,可以匹配任意行开头
多行模式时,可以匹配任意行开头
$ 匹配行的结束
多行模式时,可以匹配任意行结尾
多行模式时,可以匹配任意行结尾
\A 仅匹配整个字符串的开始
不支持多行模式
不支持多行模式
\Z 仅匹配整个字符串的结束
不支持多行模式
不支持多行模式
环视
(?<=Y)X
匹配前面是Y的X
(?<!Y)X
匹配前面不是Y的X
X(?=Y)
匹配后面是Y的X
X(?!Y)
匹配后面不是Y的X
贪婪,非贪婪,独占模式
量词
贪婪匹配
表示次数的量词,默认是贪婪的
满足要求的情况下,尽可能按最长去匹配
满足要求的情况下,尽可能按最长去匹配
回溯:后面匹配不上,会吐出已匹配的再尝试
非贪婪匹配
"量词"元字符后加 ?(英文问号)
满足要求情况下,尽可能按最短匹配
满足要求情况下,尽可能按最短匹配
回溯:后面匹配不上,会匹配更长再接着尝试
独占模式
"量词" 元字符后加 +(英文加号)
满足要求情况下,尽可能按最长匹配
满足要求情况下,尽可能按最长匹配
不会发生回溯,匹配不上即失败
分组
功能
将某部分(子表达式)看成一个整体
在后续查找或替换中引用分组
分组编号
第几个括号就是第几个分组
非捕获分组 使用 (?:正则)
括号嵌套只需要看左括号的序号
命名分组 (?P<名称>正则)
分组引用
查找: 查找重复出现的部分
替换: 对原有内容格式进行改写
文本编辑器
正则匹配模式(Match Mode)
不区分大小写模式 Case-Insensitive
作用
正则不区分英文字母的大小写
修饰符
(?!)
点号通配模式-Dot All
作用
英文的点号可以匹配任何字符,包括换行
修饰符:
(?s)
很多地方成为"单行匹配模式",其实和多行匹配没有关系
JavaScript不支持
等价于
[\s\S]
[\d\D]
[\w\W]
多行模式-Multiline
作用
^或 $ 默认是匹配整个字符串的开头或结尾
多行模式使得他们能匹配每行的开头或结尾
多行模式使得他们能匹配每行的开头或结尾
修饰符
(?m)
^匹配行的开始,多行模式时,可匹配任意行开头
$ 匹配行的结束,多行模式时,可以匹配任意行结尾
注释模式-Comment
作用
正则可能很复杂,添加注释方便理解
修饰符
(?#comment)
示例
(\w+)\1(?#word repeat again)
正则转义
转义字符
含义
对它后续的几个字符进行替代并解释
功能
编码无法用字母表示的特殊数据
表示无法直接键盘录入的字符(如回车符)
字符串转义和正则转义
字符串转义
输入字符串到字符串文本的过程
正则转义
正则文字到正则表达式的过程
匹配反斜杠本身需要四个 \
简化方式
使用原生字符串
元字符的转义
量词
*
+
?
-
^
$
|
括号
[] , {}
只需转义开括号
{}
()
转义结果:
\(\)
使用编程语言中的函数消除元字符特殊含义
字符组的转义
脱节符在中括号中,且在第一个位置
中划线在中括号中,且不在首尾位置
右括号在中括号中,且不在首位
其他单个长度的元字符一般不需要转义
0 条评论
下一页