偶然间找到了一个快速学习正则的小视频,记录下来。
限定符 Quantifiers
?
前面一个字符需要出现0或1次
*
匹配前一字符出现0或者多次
+
匹配前一字符出现1次以上
{…}
- 指定前一字符出现次数
允许b出现6次
- 限定前一字符出现次数范围
允许b出现 2-6 次
允许b出现2次以上
(…)
匹配多个字符
重复匹配ab多次
“或”运算 OR Operator
(…|…)
匹配 a cat 或者 a dog
括号是不可缺少的,否则将变成匹配 a cat或者dog
字符类 Character Classes
[…]+
匹配abc三个字母构成的单词 [abc]+
匹配所有的小写英文字符、大写英文字符和数字0-9【a-zA-Z0-9]+
^
要求匹配除了尖号后面列出的 [以外] 的字符
** [^0-9]+ 匹配0-9之外的字符,即非数字字符(包括换行符)**
元字符 Meta-characters
\d 数字字符
等同于 [0-9]+
\w 单词字符
单词字符(英文、数字及下划线)
\s 空白符
空白符(包含Tab和换行符)
\D 非数字字符
\W 非单词字符
\S 非空白字符
. 任意字符
任意字符不包含换行符
^ 匹配行首
^a 匹配行首的a
$ 匹配行尾
a$ 匹配行首的a
贪婪与懒惰匹配 Greedy vs Lazy Match
-
正则表达式默认贪婪匹配
-
加
?
将默认的贪婪匹配变成懒惰匹配
例子1:RGB 颜色值匹配
- RGB十六进制颜色值 [1-fA-F0-9]
- 六位数 {6}
- 字符边界 \b
例子2:IPv4地址匹配
- 四段数字构成
- 句点隔开
简单满足ipv4格式,但是256在ipv4地址中不存在,因此这种写法不正确
其中:
- \d+ 匹配长度大于1的数字
- \. 反斜杠作转义字符
学习资料
- 奇乐编程学院:https://www.bilibili.com/video/BV1da4y1p7iZ?
- regex在线测试工具: https://regex101.com/
- 正则表达式30分钟入门教程 作者: deerchao https://deerchao.cn/tutorials/regex/regex.htm
- Regex tutorial — A quick cheatsheet by examples (英文) 作者: Jonny Fox https://medium.com/factory-mind/regex-tutorial-a-simple-cheatsheet-by-examples-649dc1c3f285
- Regular Expressions Tutorial (英文) https://www.regular-expressions.info/tutorial.html