| 符号 | 描述 |
| . | 匹配任何字符换行符除外 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串末尾或字符串末尾换行符之前 |
| * | 匹配前面RE的0个或更多(贪婪)重复。贪婪意味着它将匹配尽可能多的重复 |
| + | 匹配前面RE的1次或多次(贪婪)重复 |
| ? | 匹配前面RE0或1(贪婪)次 |
| *?, +?, ?? | *,+,? 三个特殊字符的非贪婪版本 |
| {m,n} | 匹配前面RE的m到n次重复(贪婪) |
| {m,n}? | 匹配前面RE的m到n次重复(非贪婪) |
| \\ | 转义特殊字符或向特殊序列发送信号 |
| [] | 表示一组字符。第一个字符为“^”表示互补集 |
| | | A|B, 创建匹配A或B的RE |
| (...) | 匹配括号内的RE |
| (?aiLmsux) | 为RE设置A、I、L、M、S、U或X标志 |
| (?:...) | 括号的非分组版本 |
| (?P | 可以通过名称访问组匹配的子字符串 |
| (?P=name) | 匹配之前由组名称匹配的文本 |
| (?#...) | 注释信息,里面的内容会被忽略 |
| (?=...) | 匹配如果后面存在某某文本,但是不消费字符串 |
| (?!...) | 匹配如果后面不存在某某文本 |
| (?<=...) | 匹配当前位置之前是某某文本 |
| (? | 匹配当前位置之前不是某某文本 |
| (?(id/name)yes|no) | 如果给定的id/name存在,则匹配yes模式,否则匹配no模式,no模式可以忽略 |
| \number | 匹配分组的内容,每个括号是一个分组,从1开始编号,\1表示匹配第一个分组 |
| \A | 匹配字符串的开始 |
| \Z | 匹配字符串的结尾 |
| \b | 匹配空字符串,但仅在单词的开头或结尾 |
| \B | 匹配空字符串,但不在单词的开头或结尾 |
| \d | 匹配任何十进制数字 |
| \D | 匹配任何非数字字符 |
| \s | 匹配空白字符 |
| \S | 匹配非空白字符 |
| \w | 匹配数字字母下划线 |
| \W | 匹配非数字字母下划线 |
用途: 匹配任何字符除了换行符
示例:

用途: 匹配字符串的开始位置
示例:

用途: 匹配字符串的结束位置
示例:

用途: 匹配前面的表达式0次或多次(贪婪)
示例:

用途: 匹配前面的表达式1次或多次(贪婪)
示例:

用途: 匹配前面的表达式0次或1次(贪婪)
示例:

用途: 匹配前面的表达式0次或1次(非贪婪)
示例:

用途: 匹配前面的表达式1次或多次(非贪婪)
示例:

用途: 匹配前面的表达式0次或1次(贪婪)
示例:

用途: m和n均为非负整数,其中 m<=n。最少匹配m次且最多匹配n次(贪婪)
示例:

用途: m和n均为非负整数,其中 m<=n。最少匹配m次且最多匹配n次(非贪婪)
示例:

用途: m和n均为非负整数,其中 m<=n。最少匹配m次且最多匹配n次(非贪婪)
示例:

用途: 表示一组字符集合,匹配所包含的任意一个字符。第一个字符为“^”表示互补集
示例:

用途: A|B, 创建匹配A或B的RE
示例:

用途: 匹配括号内的RE
示例:

用途: 为RE设置A、I、L、M、S、U或X标志,等价于re.I re.A 等
示例:

用途: 括号的非分组版本,该分组所匹配的子字符串 不能 在执行匹配后被获取或是在之后的模式中被引用
示例:

用途: 可以通过名称访问组匹配的子字符串, 指定名称后数据索引依然有效
示例:

用途: 匹配之前由组名称匹配的文本
示例:

用途: 注释信息,里面的内容会被忽略
示例:

用途: 匹配如果后面存在某某文本,但是不消费字符串
示例:

用途: 匹配如果后面不存在某某文本
示例:

用途: 匹配当前位置之前是某某文本
示例:

用途: 匹配当前位置之前不存在某某文本
示例:

用途:如果给定的id/name存在,则匹配yes模式,否则匹配no模式,no模式可以忽略, 其中id和name是分组id和指定的分组名name
示例:

PS:这个比较难理解, 希望大家仔细思考一下。
用途:匹配分组的内容,每个括号是一个分组,从1开始编号,\1表示匹配第一个分组
示例:

剩下的比较简单,此处略过,感兴趣的同学可以自己去试试。