正则表达式
限定符
限定符 | 说明 | 正则 | 可匹配结果 |
---|---|---|---|
? | 匹配前面的子表达式零次或一次 | abc? | ab、abc |
* | 出现0次或多次的字符 | ab*c | abc、abbbbc、ac |
+ | 出现1次以上的字符 | ab+c | abc、abbbbc |
可以匹配到出现1次以上的字符 | (ab)+c | abc、abababc | |
{ } | 指定字符出现次数 | ab{5}c | abbbbbc |
指定字符出现至少多少次 | ab{2,}c | abbc、abbbbbbbbc | |
指定字符出现次数区间 | ab{2,5}c | abbc、abbbbbc |
“或”运算符
运算符 | 说明 | 正则 | 可匹配结果 |
---|---|---|---|
I | 或 | a_cat I dog | a_cat、a_dog |
字符类
字符 | 说明 | 正则 | 可匹配结果 |
---|---|---|---|
[ ] | 要求匹配的内容只能取自于[ ]中的字符 | [ abc ]+ | abc、acccc |
[ ^ ] | 要求匹配的内容不能取自于[ ]中的字符 | [ ^a-zA-z1-9 ] + | 0 |
元字符
字符 | 说明 | 正则 | 可匹配结果 |
---|---|---|---|
\d | 数字字符,等同于[ 0- 9 ] | \d+ | 123、2333 |
\D | 非数字字符 | \D+ | wqer、_sys |
\w | 单词字符,可以匹配所有的英文字符、数字及下划线 | \w+ | 0,233x0,_d4s |
\W | 非单词字符(包括空白符) | \W+ | +,-,* ,/ |
\s | 空白符,包含tab和换行符 | \s+ | |
\S | 非空白符 | \S+ | a , c++ , /_#8 |
. | 句点,代表任意字符,但不包含换行符 | .* | a , c++ , , /_#8 |
^ | 匹配行首 | ^y | 只会匹配行首的y |
$ | 匹配行首 | a$ | 只会匹配行尾的a |
贪婪与懒惰匹配
例如:
<span> <a> hello world </a> </span>
当我们只想去匹配标签的时候,
< .+ ? > | 加上个?,问号会将正则中默认的贪婪匹配切换为懒惰匹配,这样就不包含hello world了 |
---|---|
< .+ > | 使用这个正则会匹配到所有的字符,因为局点会匹配尽可能多的字符 |
实例1
RGB 颜色值匹配
#[a-fA-F0-9]{6}\b
匹配第一个字符#,因为rgb为16进制的六位数,因此设置#[a-fA-F1-9],\b来代表单词字符的边界;
#FFDAB9 #FFD700 #FFD39B
#FFC1C1 #FFC125 #FFC0CB ......
实例2
IP地址匹配
\b((25[0-5]|2[0-4]?\d?|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]?\d?|[01]?\d\d?)\b
分析IP地址最大255.255.255.255,最小0.0.0.0
25[0-5]|2[0-4]?\d?|[01]?\d\d?
匹配ip的第一个断点可以是24开头三位数,或2开头小于50的三位数(200-249),或是0、1开头的一位数二位数三位数
((25[0-5]|2[0-4]?\d?|[01]?\d\d?)\.){3}
加上句点验证三次
\b((25[0-5]|2[0-4]?\d?|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]?\d?|[01]?\d\d?)\b
第四个句点重复之前规则,并加上边界符
原作者视频 https://www.bilibili.com/video/BV1da4y1p7iZ?from=search&seid=1073899913250552791
捕获,断言, 递归 ,平衡组
。。。。。。待继续学习