正则表达式
2021-05-17 17:54:33 47 举报
AI智能生成
正则表达式正则表达式正则表达式正则表达式
作者其他创作
大纲/内容
正则表达式
能做什么
一句话:校验,查找,替换文本
细分
校验数据的有效性
如:校验手机,邮箱
查找符合要求的文本内容
如:查找符合规则的号码
对文本进行切割,替换等操作
如:使用连续的空白符切割字符串
元字符
特殊单字符
.
任意字符(换行除外)
\\d 任意数字 \\D 任意非数字
\\w 任意字母数字下划线 \\W 任意非字符数字下划线
\\s 任意空白符 \\S 任意非空白符
空白符
\ 回车符
\ 换行符
\\f 换页符
\\t 制表符
\\v 垂直制表符
\\s 任意空白符
范围
|
表示\"或\",如 ab|bc 代表ab或bc
[...]
多选一,括号中任意单个元素
[^...]
取反,不能是括号中任意单个元素
量词
*
0到多次
+
1到多次
?
0到1次,如colo?r
{m}
出现m次
出现至少m次
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 条评论
回复 删除
下一页