正则表达式 语法
约 802 个字 预计阅读时间 3 分钟
在使用py的re模块中需要详细理解正则表达式,这里给出我个人的笔记记录,以备不时之需
部分参考b站与菜鸟教程
正则表达式的模式
可以包含以下几类:
- 字面值字符:例如字母、数字、空格等,可以直接匹配它们自身
- 特殊字符:例如点号 .、星号 *、加号 +、问号 ? 等,它们具有特殊的含义和功能
- 字符类:用方括号 [ ] 包围的字符集合,用于匹配方括号内的任意一个字符
- 元字符:例如 \d、\w、\s 等,用于匹配特定类型的字符,如数字、字母、空白字符等
- 量词:例如 {n}、{n,}、{n,m} 等,用于指定匹配的次数或范围
- 边界符号:例如 ^、$、\b、\B 等,用于匹配字符串的开头、结尾或单词边界位置
匹配单个字符
d? d
问号前面的字符可以出现0/1次
a* a
星号前面的字符可以出现0/多次
a+ a
加号前面的字符出现一次以上
a{6}
花括号前面的字符 a 出现6次
a{2,}
花括号前面的字符 a 出现2次以上
a{2,6}
花括号前面的字符 a 出现2-6次
匹配多个字符
(ab)+
字符"ab"出现一次或多次
或运算
a (cat | dog)
匹配a cat 或者a dog
如果不添加括号,如:
a cat | dog
则匹配a cat 或者dog
字符类
[abc]
匹配字符串中所有的a,b,c字母
[^abc]
匹配字符串中除了字母a,b,c的所有字符
[abc]+
匹配字符串中所有出现一次及以上的a,b,c字母
[A-Za-z0-9]
匹配A-Za-z0-9的字符
常见元字符
\d
数字字符 \d+
匹配一个以上的数字
\D
非数字字符
\w
单词字符 单词 数字 下划线即英文字符
\W
非单词字符
\s
空白符 包含空格和换行符
\S
非空白字符
\b
单词的边界 单词的开头或结尾 单词与符号之前的边界
\B
非单词的边界 符号与符号 单词与单词的边界
.
任意字符不包含换行符
\.
表示. 通过\进行了转意
^
匹配行首 ^a
表示匹配以a开头的行首字符
$
匹配行尾 d$
表示匹配以d结尾的行末字符
贪婪匹配与懒惰匹配
<strong><b>https://www.example. com</strong></b>
是需要匹配的一行字符
想要匹配<>里的内容
<.+>
会匹配整串 因为是贪婪匹配
<.+?>
只匹配两个标签代码,+?
设置为懒惰匹配
实例
RGB值的匹配
不难看出,其rgb的十六进制格式均为#开头,再加上六位字符(字母+数字)其中字母大小写均可
要想筛选出正确的十六进制RGB代码,可以这样写出正则表达式:
#[a-zA-Z0-9]{6}\b
\b表示匹配了一个换行符号,这样做可以避免不符合要求的值(不是六个字符)得到匹配
正则表达式在线测试工具:regexr-cn.com