正则的语法:使用元字符进行排列组合用来匹配字符串

在线测试正则表达式https://tool.oschina.net/regex/

一,常用元字符

字符 fuction
. 匹配除换行符外的任意单个字符
\d 匹配任意数字,等价于 [0-9]
\D 匹配任意非数字
\w 匹配字母、数字、下划线
\W 匹配非单词字符(非字母、数字、下划线)
\s 匹配空白符(空格、制表符等)
\S 匹配非空白符

二,字符集合与范围

字符集合范围 fouction
[abc] 匹配其中任意一个字符
[^abc] 匹配除括号内字符外的任意字符
[a-z] 匹配小写字母范围
[0-9] 匹配数字范围
[a-zA-Z0-9] 混合使用

三,量词(重复次数)

量词 fuction
* 重复0次或多次
+ 重复1次或多次
? 重复0次或1次
{n} 精确重复n次
{n,} 重复至少n次
{n,m} 重复n到m次

四,贪婪与惰性字符

  • 默认 .*或.+ 等是贪婪字符,会尽可能多匹配。

  • 在量词后加 ? 变为惰性字符:.*? 会匹配单个HTML标签,而不是整个HTML文本。

五,正则表达式在python中的使用

使用正则表达式之前需要导入re模块,且模块中有以下函数

1
2
3
4
5
6
7
import re
#函数:
re.compile
re.match
re.search
re.findall
re.finditer
函数 功能
compile 函数将正则表达式模式编译成一个正则表达式对象,之后可以反复使用该对象的方法,效率更高
match match函数从字符串的起始位置匹配模式,如果起始位置不匹配则返回 None,成功则返回匹配对象(Match object)。
search search函数在字符串中搜索第一个匹配的位置,返回匹配对象;如果没找到则返回 None。
findall findall函数返回字符串中所有非重叠匹配的列表。如果有多个捕获组,则返回元组列表。
finditer finditer函数返回一个迭代器,每次迭代产生一个匹配对象,适合处理大量匹配。