正则表达式
2020-10-26 19:33:25 2 举报
AI智能生成
正则表达式总结
作者其他创作
大纲/内容
元字符
基础
. 任意字符(换行符除外,即一行内的任意字符)
\d 任意数字; \D 任意非数字
\w 任意数字、字母、下划线; \W除数字、字母、下划线以外的任意字符
\s 任意空白字符; \S 任意非空白字符
注:以上都是匹配单个字符
空白符
\r 回车符
\n 换行符
\f 换页符
\t 制表符
\v 制表符
注:不同系统的文本换行符不一样,比如window系统每行结尾是\r\n;linux和mac每行结尾是\n
量词
* 含义:0到多次
+ 含义:1到多次
? 含义:0到1次
{m} 含义:m次
{m,n} 含义:m到n次
{ ,n} 含义:0到n次,即最多n次
{m, } 含义:m到多次,即至少m次
范围
| 含义:或 例如ab|bc表示ab或bc
[.....] 含义:多选一,匹配括号中任意一个元素
[^.....] 含义:不能是括号中的任意单个元素
[a-Z] 含义:匹配a到Z之间的任意字符(按ASCII表顺序)
例如手机号表示:1[3456789]\d{9},1[3-9]\d{9},1[^012]\d[9]三种写法
边界
^ 匹配行的开头(多行模式,整个文本的每一行开头都会检测匹配)
$ 匹配行的结尾(多行模式,整个文本的每一行结尾都会检测匹配)
\b 匹配单词边界 例如:\bthe\b能匹配上单词the,匹配不上there
\A 匹配整个字符串(文本)开头而不是每行(不支持多行模式)
\Z 匹配整个字符串(文本)结束而不是每行(不支持多行模式)
贪婪&非贪婪
贪婪 : 正则中表示次数的量词(*、+、{m , })默认是贪婪的,默认尽可能多地去匹配
非贪婪:量词后加?(应为问号),找出长度最小且满足要求的字符
例如字符串:"the little cat" is a toy, it looks "a little bad".
符合正则要求的内容
(""双引号是有正反的,不然有六个字符串符合要求)
(""双引号是有正反的,不然有六个字符串符合要求)
"the little cat"
"a little bad"
"the little cat" is a toy,it looks "a little bad"
贪婪正则:".+"
匹配结果:"the little cat" is a toy,it looks "a little bad"
找到引号内容最长的(如一样长取第一个)
非贪婪正则:".+?"
匹配结果:"a little bad".
找到引号内容最短的内容(如一样长取第一个)
环视
X(?<=Y) 匹配前面是Y的X
X(?<!Y) 匹配前面不是Y的X
X(?=Y) 匹配后面是Y的X
X(?!Y) 匹配后面不是Y的X
例如:
<ul>
<li>item1</li>
<li>item2</li>
</ul>
<ul>
<li>item1</li>
<li>item2</li>
</ul>
正则:(?<=<li>)(.+)(?=</li>)
匹配前面是<li>,后面是</li>的中间字符
匹配结果:item1和item2
子组
(正则表达式) 将regex保存成一个子组
(?P<name>正则表达式) 命名子组为name,将regex保存成名为name的子组
(?:正则表达式) 仅分组,不保存这个组
\分组编号 重复某个子组
例如:去重文本中相邻的两个一样的单词
文本:the cat cat is in the the hat.
正则:(\w+) \1
解释:(\w+)会匹配一个单词,并保存为子组1
\1 标识前面保存的子组中,重复第一个子组
匹配结果:cat cat 和 the the两个字符串
正则替换:上面匹配到的字符串替换为子组1 \1
结果文本:the cat is in the hat.
0 条评论
下一页