当前位置: Python基础教程 > 18-py与正则表达式 > 阅读正文

python之regex分组

2021.8.22.   903 次   645字

本节介绍python与正则表达式(regex)的分组

|匹配左右任意一个表达式
(ab)将括号中字符作为一个分组
\num引用分组num匹配到的字符串
(?P<name>)分组起别名
(?P=name)引用别名为name分组匹配到的字符串

分组表示的是,对选择多个列举字符的一组,例如xxx@163.com与xxx@qq.com,那么这里的163和qq就可以看成2组,要么163,要么qq

分组使用的符号是|,也就是编程中的”位或”运算符,表示选择其中一个。

使用|时,如果不指定范围,那么整个regex分成2组,所以通常我们指定从那分组,使用()指定,例如

re.match(r"xxx@(163|qq)\.com", xxx@qq.com)

分组后,一旦表达式匹配成功,就可以取出分组后的内容,假设上面re.match的返回值为result,则

result.group(1)  # qq

在使用group函数时,指定num就可以取出指定分组的内容,1表示第一个分组,也就是从左到右第一个小括号()

这意味着,分组可以取出该分组的值,甚至在匹配中就能使用,例如<h1></h1>标签的匹配,对起始标签进行分组,那么我们就知道它是h1,在后续如果是/h1则说明配对,可以通过\num实现

re.match(r"<(\w*)>.*</\1>)", "<h1>abc</h1>"))

随着分组越来越多,简单使用()以及\num可能不太方便,于是可以给分组起别名(?P<name>),以及可以取代\num的别名引用(?P=name))

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群