参考视频:10分钟快速掌握正则表达式_哔哩哔哩_bilibili
这个网站用来测试写的正则表达式效果:regex101: build, test, and debug regex
示例:
限定符
? 表示前一个字符可有可无
比如这里输入:de?
匹配结果可以得到d和de
* 前一个字符出现0到无穷次
这里输入:com*
得到comm,co
+ 前一个字符出现一次以上
这里输入:com+
得到comm,相比上一个示例*少了结果co
{} 指定出现次数范围
写单个数字指定前一个字符出现几次
逗号隔开两个数字,表示范围
还可以省略一个数字,如:
限定多个字符
给字符串加个括号当作一个字符即可。
| 运算符
字符类
[]内放字符,代表搜索的字符只能包含这几个字符
还可以扩大到范围。
前面加上^代表除了这块字符
元字符
\d代表数字字符,等于[0-9]
\w代表包括下划线的数字和任何单词字符
\s代表空白字符
\D代表非数字字符
\W代表非单词字符
\S代表非空白字符
.代表任意字符,但不包含换行符
^匹配行首,$匹配行尾,
贪婪与懒惰匹配
这里我们写入<.+>会贪心匹配到所有字符
但是我们只想要得到<>里的内容以便处理数据时删去,要怎么办呢?
加上问好即可把贪婪匹配转化为懒惰匹配,<.+?>
从原来尽可能多的匹配,到尽可能少的匹配。
实例
查找RGB
RGB是#开头的6位十六进制表达式
#[a-fA-F0-9]{6}
匹配#,十六进制,花括号指定位数
但是这里#fffffffff也被统计进去了,加上\b表示字符末尾的边界。#[a-fA-F0-9]{6}\b