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']  # 会由外至内的匹配分组
posted @ 2016-06-18 03:14  Cool_King  阅读(367)  评论(0编辑  收藏  举报