python re模块学习(二)
正则匹配之分组匹配
去已经匹配到的数据中再次提取数据
# match 分组 origin = 'has sdfsx x' # 普通正常正则匹配 r = re.match(r'h\w+', origin) print(r.group()) ==> has # 分组匹配 r = re.match(r'h(\w+)', origin) # 这里我加了一个圆括号 print(r.groups()) ==> ('as',) # 这里就会显示,我括住的都匹配到了哪些 # 分组字典 r = re.match(r'h(?P<name>\w+)', origin) print(r.groupdict()) ==> {'name': 'as'} # 这里相当于在上一个分组基础上,我给这个括号起了个变量名,这个变量名作为key,被匹配到的值作为value存入的字典
# findall分组 origin = 'has sdfsx hal x' r = re.findall('h(\w+)',origin) print(r) ==> ['as', 'al'] # findall分组,当括住这一部分列出 # findall支持多个分组 origin = 'hasaabc sdfsx halaabc x' r = re.findall('h(\w+)a(ab)c',origin) print(r) ==> [('as', 'ab'), ('al', 'ab')]
# split分割分组 # 无分组情况下 s = 'xxx a xxxx' r = re.split('a', s) print(r) ==> ['xxx ', ' xxxx'] # 有分组 r = re.split('(a)', s) print(r) ==> ['xxx ', 'a', ' xxxx'] # 它将切割字符也添加进来 # 分组嵌套分组 r = re.split('(a(le)x)', s) print(r) ==> ['xxx ', 'alex', 'le', ' xxxx'] # 会由外至内的匹配分组