正则表达式中,group()
用来提出分组截获的字符串,()
用来分组。
例如:
import re
a = "123abc456"
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) #123abc456,返回整体
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1) #123
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2) #abc
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3) #456
正则表达式中的三组括号把匹配结果分成三组
-
group() 同group(0)就是匹配正则表达式整体结果
-
group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
-
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
例子:对python的命令行命令进行参数的解析
# 导入re库
import re
# 需要匹配的参数
parameters='device_list=[0,1,2,3],train_steps=40000,update_cycle=16,batch_size=256,save_checkpoint_steps=2000,max_length=256'
# 对字符串进行匹配
result = re.match(r".*device_list=\[(.*?)\].*", parameters)
# group()的使用
type(result.group())
# str
result.group()
# 'device_list=[0,1,2,3],train_steps=40000,update_cycle=16,batch_size=256,save_checkpoint_steps=2000,max_length=256'
result.group(0)
# 'device_list=[0,1,2,3],train_steps=40000,update_cycle=16,batch_size=256,save_checkpoint_steps=2000,max_length=256'
result.group(1)
# '0,1,2,3'
# groups()的使用
type(result.groups())
# tuple
result.groups()[0]
# '0,1,2,3'
# 如果匹配规则分为好几个组的话,还可以:
# result.groups()[1]:表示第二个括号匹配部分
# result.groups()[2]:表示第三个括号匹配部分
# ...
至此,我们可以通过这个例子,完全的了解正则匹配中re.match().group()函数的使用了。