python | 正则匹配中re.match().group()函数的使用

发布时间 2023-06-26 17:12:57作者: 张Zong在修行

正则表达式中,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()函数的使用了。