这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天。
正则表达式在线测试工具:regex101.com/
1. 限定符
a*
:a
出现 0 次或多次a+
:a
出现 1 次或多次a?
:a
出现 0 次或 1 次a{6}
:a
出现 6 次a{2,6}
:a
出现 2 到 6 次 (2,3,4,5,6)a{2,}
:a
出现 2 次及以上(ab)*
:ab
出现 0 次或多次
2. 或运算符
(a|b)
:匹配a
或者b
((ab)|(cd))
:匹配ab
或者cd
3. 字符集合
[abc]
:匹配 a 或者 b 或者 c(集合 abc 中的任意一个)[a-z]
:匹配 a 到 z 的字符集合[^0-9]
:匹配不是集合 0 到 9的[a-fA-F0-9]
:匹配 a到f A到F 0到9 的集合(十六进制的数字)
4. 元字符
\d
:匹配数字字符\D
:匹配非数字字符\w
:匹配单词字符(英文大小写字母、数字、下划线)\W
:匹配非单词字符\s
:匹配空白字符(空格、换行、回车)\S
:匹配非空白字符.
:匹配除换行符以外的任意字符\b
:标注字符边界^
:匹配行首$
:匹配行尾
正则表达式模式是贪婪模式,尽可能多的匹配字符。加上 ?
使它变为懒惰模式。
<.+>
匹配:<span><b>hello,regular</b></span>
<.+?>
匹配:<span>
、<b>
、</b>
、</span>
5. 实例
- 快速选择 git meager
=======(.|\r|\n)*?>>>>>>> ef18e3b4337f758c1cde2fee14d0251238b399a1
(.|\r|\n)
:匹配所有字符和换行符(.|\r|\n)*?
:懒惰模式 可以匹配如下文本:
=======
class A {
}
class B {
}
>>>>>>> ef18e3b4337f758c1cde2fee14d0251238b399a1
- 十六进制 RGB 颜色值匹配
#[a-fA-F0-9]{6}\b
#00
#ffffff
#fafafa
#00hh00
#000000
#ffffffff
- IP 地址匹配
\b(((25[0-5])|(2[0-4]\d)|([01]?\d\d?))\.){3}((25[0-5])|(2[0-4]\d)|([01]?\d\d?))\b
说明
(25[0-5])|(2[0-4]\d)|([01]?\d\d?)
(25[0-5])
:匹配 250 到 255(2[0-4]\d)
:匹配 200 到 249([01]?\d\d?)
:匹配[01]\d\d
:匹配 000 到 199\d\d
:匹配 00 到 99~~[01]\d
:匹配 00 到 19~~\d
:匹配 0 到 9
123
255.255.255.0
192.168.0.1
0.0.0.0
256.1.1.1
This is not IP address.
123.123.0