python正则表达式精讲--分组
发布网友
发布时间:2024-10-01 19:22
我来回答
共1个回答
热心网友
时间:2024-10-18 01:08
分组是正则表达式中的一种重要功能,它通过圆括号“()”将表达式括起来,从而形成一个匹配的分组。这样,我们可以从目标字符串中提取出与圆括号内正则表达式相匹配的内容。
例如,使用正则表达式中的非数字字符“\D”,我们可以从目标字符串中提取出小时和分钟。程序输出结果为相应的小时和分钟。
在定义分组方面,有三种常见的形式。
首先,是命名分组。命名分组同样使用圆括号,但在正则表达式前面添加一个命名的步骤,以“?P”开头,并在“>”内填入分组的名称。使用命名分组后,我们可以使用groupdict方法来获取match的结果,它是一个字典。
其次,是不捕获分组。使用不捕获分组时,括号内的内容不会被捕获。例如,正则表达式在目标字符串中找到了模式,但group()返回的是匹配到的内容,即使两个分组也匹配到了内容,但由于是使用的不捕获分组,因此圆括号里的内容不会被捕获,groups()返回的是空元组。
最后,可以制作一张表格来反映分组形式与获取结果方法之间的关系。
引用分组的主要目的是对重复出现的文本进行匹配,而不是对重复的模式进行匹配。在引用分组时,对于普通分组,正则表达式引擎会默认为它们分配一个编号,从1开始。在编写整个表达式时,后面的部分可以通过编号引用前面的分组。
对于命名分组,没有分组编号,而是用分组的名字。命名分组的形式是“(?P)”,在引用时,则使用“(?P=name)”。和引用分组编号一样,它只能对重复的文本进行匹配,而不是对重复的模式进行匹配。
对于不捕获分组,既没有分组编号,也没有分组名称,因此无法引用不捕获分组。