python group函数有几个返回值

Python017

python group函数有几个返回值,第1张

一个,返回的是符合正则表达式的字符串

group(0)返回整个字符串;

group(1)返回第一个匹配值;

group(2)返回第二个匹配值;

group(3)返回第三个匹配值。

依次类推。

group和groups是两个不同的函数。

一般,m.group(N) 返回第N组括号匹配的字符。

而m.group() == m.group(0) == 所有匹配的字符,与括号无关,这个是API规定的。

m.groups() 返回所有括号匹配的字符,以tuple格式。

m.groups() == (m.group(0), m.group(1), ...)

正则表达式中,group()用来提取分组截获的字符串,()用来分组。

组是通过 "(" 和 ")" 元字符来标识的。 "(" 和 ")" 有很多在数学表达式中相同的意思;它们一起把在它们里面的表达式组成一组。举个例子,你可以用重复限制符,象 *, +, ?, 和 {m,n},来重复组里的内容,比如说(ab)* 将匹配零或更多个重复的 "ab"。

如果不引入括号,整个个表达式作为一个组,是group(0)

对于题目中的例子:

m = re.match("([abc])+", "abc")

+号在括号外面。括号最多匹配到一个字符,要么是a, 要么是c,这个python引擎匹配的是末尾的c。

而m.group() == m.group(0) 这个返回的是整个匹配的字符串"abc".

返回查到到的匹配文本。

>>>import re

>>>phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')

>>>mo = phoneNumRegex.search('My number is 415-555-4242.')

>>>print('Phone number found:' + mo.group())

Phone number found:415-555-4242

假定想要将区号从电话号码中分离,添加括号将在正则表达式中创建“分组”:(\d\d\d) -(\d\d\d-\d\d\d\d)。然后可以使用group()匹配对象方法,从一个分组中获取匹配的文本。

正则表达式字符串中的第一对括号是第1组。第二对括号是第2组。

向group()匹配对象方法传入整数1或2,就可以取得匹配文本的不同部分。向group()方法传入0或不传入参数,将返回整个匹配的文本。

group()方法在分组的情况下,可以通过指定参数来返回指定分组的匹配文本。

>>>phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')

>>>mo = phoneNumRegex.search('My number is 415-555-4242.')

>>>mo.group(1)

'415'

>>>mo.group(2)

'555-4242'

>>>mo.group(0)

'415-555-4242'

>>>mo.group()

'415-555-4242'

使用groups()方法,返回一个元组。有多少分组就有多少元素。

>>>mo.groups()

('415' ,'555-4242')

>>>areaCode, mainNumber =mo.groups()

>>>print(areaCode)

415

>>>print(mainNumber)

555-4242