python 通过 re 模块实现对正则表达式的支持,一般先将正则表达式的字符串形式编译为 Pattern 实例(re.compile(string[,flag])),然后使用 Pattern 实例处理文本并获得匹配结果,最后使用 Match 实例获得信息。
python 中常用的实现正则表达式匹配函数有两种调用方式 re 调用和 pattern 调用。
1.re 调用
1.re.match(pattern, string[,flags])
2.re.search(pattern, string[,flags])
3.re.split(pattern, string[,maxsplit[,flags]])
4.re.findall(pattern, string[,flags])
5.re.finditer(pattern, string[,flags])
6.re.sub(pattern, repl, string[,flags[,count]])
7.re.subn(pattern, repl, string[,flags[,count]])
2.pattern 调用
1.pattern.match(string[,flags])
2.pattern.search(string[,flags])
3.pattern.split(string[,maxsplit[,flags]])
4.pattern.findall(string[,flags])
5.pattern.finditer(string[,flags])
6.pattern.sub(repl, string[,flags[,count]])
7.pattern.subn(repl, string[,flags[,count]])
其中,flags 参数表示匹配模式,取值有以下几种情况,并且可以使用 "|" 同时使用多种匹配模式。
1.re.I: 忽略大小写
2.re.M: 多行模式,改变 "^" 和 "$" 的含义
3.re.S: 点任意匹配模式,改变 "." 的含义
4.re.L: 使预定义字符类 \w\W\b\B\s\S 取决于当前区域设定
5.re.U: 使预定义字符类\w\W\b\B\s\S\d\D 取决于 unicode 定义的字符属性
6.re.X: 详细模式,这个模式下正则表达式可以是多行的,忽略空白符,并可以加入注释
以上 7 个函数在 re 模块中进行搜索匹配,如果需要获得匹配的数据,这时可以利用 Match 对象,Match 对象保存了正则表达式匹配的过程。Match 对象的属性有:
1.string: 匹配时使用的文本。
2.re: 匹配时使用的 pattern 对象。
3.pos: 文本中正则表达式开始搜索的索引。
4.endpos: 文本中正则表达式结束搜索的索引。
5.lastindex: 最后一个被捕获的分组在文本中的索引。
6.lastgroup: 最后一个被捕获的分组的别名。
7.group(group1,...): 获得一个或多个分组截获的字符串。
8.groups(): 以元组形式返回全部分组截获的字符串。
9.groupdict(): 返回以有别名的组的别名为键,以改组截获的子串为值的字典,没有别名的组不包含在内。
10.start(group): 返回指定的组截获的子串在 string 中的起始索引。
11.end(group): 返回指定的组截获的子串在 string 中的结束索引。
12.span(group): 返回 (start(group), end(group))。
13.expand(template): 将匹配到的分组代入 template 中然后返回。
示例如下:
运行结果如下:
领取专属 10元无门槛券
私享最新 技术干货