跳转至

正则表达式 语法

约 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值

FF0000

00FF00

0000FF

FFFF00

不难看出,其rgb的十六进制格式均为#开头,再加上六位字符(字母+数字)其中字母大小写均可
要想筛选出正确的十六进制RGB代码,可以这样写出正则表达式:
#[a-zA-Z0-9]{6}\b\b表示匹配了一个换行符号,这样做可以避免不符合要求的值(不是六个字符)得到匹配

正则表达式在线测试工具:regexr-cn.com

评论