正则表达式-精髓
'''re.match() 从头匹配 如果第一个字符串是h 就会匹配到, 反之则不会。''' ''' 不分组 只有group 得到结果''' origin = 'hello alex bcd alex lge alex acd 19' r = re.match('h\w+',origin) print(r.group()) #获取匹配到的所有结果 print(r.groups()) #获取模型中匹配到的分组结果 print(r.groupdict()) #获取模型中匹配到的分组结果 ''' 分组 加上‘括号’后 groups 就会得到结果 ''' origin = 'hello alex bcd alex lge alex acd 19' r = re.match('h(\w+)',origin) print(r.group()) #获取匹配到的所有结果 print(r.groups()) #获取模型中匹配到的分组结果 print(r.groupdict()) #获取模型中匹配到的分组结果 ''' 分组 在括号里加上?P<keys> P要大写 就会給元素匹配一个字典的值 groupdict 就会得到结果 ''' origin = 'hello alex bcd alex lge alex acd 19' r = re.match("(?P<n1>h)(\w+)",origin) print(r.group()) #获取匹配到的所有结果 print(r.groups()) #获取模型中匹配到的分组结果 print(r.groupdict()) #获取模型中匹配到的分组结果 '''re.search() 浏览全部字符串,匹配第一个符合规则的字符串 .* 匹配除换行符所有字符 ''' origin = 'hello alex bcd alex lge alex acd 19' r = re.search("a(\w+).*(?P<name>\d)",origin) print(r.group()) #获取匹配到的所有结果 print(r.groups()) #获取模型中匹配到的分组结果 print(r.groupdict()) #获取模型中匹配到的分组结果 '''re.findall() 将匹配到的所有内容都防止在一个列表中 从头开始匹配,如果匹配到,下次匹配从上次匹配的后面开始匹配。 findall里面加?P<keys> 是不起作用的。只在group里面起作用 ''' r = re.findall('\d+\w\d','a2f2b32d2') print(r) origin = 'hello alex bcd alex lge alex acd 19' r = re.findall('a(\w+)',origin) print(r) '''finditer 是一个迭代器,把寻找的字符都迭代在一起了,通过for 循环取值。可以group() ''' origin = 'hello alex bcd alex lge alex acd 19' r = re.finditer('a(\w+)(?P<n1>x)',origin) print(r) for i in r: print(i,i.group(),i.groups(),i.groupdict()) n = 'alex' r = re.findall(r'(\w)(\w)(\w)(\w)',n) print(r) r = re.findall(r'(\w){4}',n) print(r) ''' re.split() 对匹配对象进行分割,并且删除,一直匹配下去,直到匹配结束。后面加参数可指定匹配次数。''' origin = 'helloalex bcdalex lgealex acd19' r = re.split('(a\w+)',origin,1) print(r) ''' re.sub() 找到匹配对象,对它进行替换。后面加参数可以控制替换次数。''' origin = 'hello alex bcd alex lge alex acd 19' r = re.sub('l','7',origin,1) print(r) ''' re.subn() 找到匹配对象,对它进行替换。然后返还替换次数。后面加参数可以控制替换次数。''' origin = 'hello alex bcd alex lge alex acd 19' r,t= re.subn('l','7',origin,) print(r,t)