(1) python 正则表达式
注意:本文只介绍常用的正则和 re 模块的用法,更多的内容请自行百度
group 和 groups
取出通过 match() 和 search() 匹配到的字符
group 示例:
import re # 加载模块 m = re.match('(foo)111(abc)','foo111abc') # 使用 match() 匹配字符串 if m is not None: # 如果没有匹配到东西 m 就等于 None,此处做判断防止异常 print(m.group()) # 返回整个字符串 print(m.group(1)) # 返回第一个括号中匹配到的内容 print(m.group(2)) # 返回第二个括号中匹配到的内容
>>foo111abc
>>foo
>>abc
groups 示例:
import re # 加载模块 m = re.match('(foo)111(abc)','foo111abc') # 使用 match() 匹配字符串 if m is not None: # 如果没有匹配到东西 m 就等于 None,此处做判断防止异常 print(m.groups()) # 返回一个包含所有括号中匹配到内容的元组 print(m.groups()[0]) # 使用下标第一个括号中匹配到的内容 print(m.groups()[1]) # 使用下标第二个括号中匹配到的内容
match()
从字符串起始位置开始匹配
match 示例:
import re m = re.match('(foo)112','foo111abc') # 从开头开始匹配 v = re.match('111(abc)','foo111abc') # 从中间开始匹配 if m is not None: # 从开头开始匹配可以匹配到 print("m:") print(m.groups()) # 返回一个包含所有括号中匹配到内容的元组 if v is not None: # 此处没有匹配到东西所以下面的语句不会执行 print("v:") print(v.groups()) # 返回一个包含所有括号中匹配到内容的元组
>>m:
>>('foo',)
search()
不关心是否是字符串起始位置
search 示例:
import re m = re.match('111(abc)','foo111abc') # 从开头开始匹配 v = re.search('111(abc)','foo111abc') # 从中间开始匹配 if m is not None: # 从开头开始匹配可以匹配到 print("m:") print(m.groups()) # 返回一个包含所有括号中匹配到内容的元组 if v is not None: # 此处没有匹配到东西所以下面的语句不会执行 print("v:") print(v.groups()) # 返回一个包含所有括号中匹配到内容的元组
>>v:
>>('abc',)
findall()
匹配所以符合正则表达式的字符串
findall 示例:
import re print(re.findall('cat','catcat,cater acater')) print(re.findall('\w\d\w','d213 d3a ff2d fff3ddd'))
>>['cat', 'cat', 'cat', 'cat']
>>['d21', 'd3a', 'f2d', 'f3d']
finditer()
基本用法和 findall 一致,但返回的对象是一个迭代器
finditer 示例:
import re a = re.finditer('\wbc','abc abcd aabcd') print(type(a)) for i in a: print(i.group())
>> abc
>> abc
>> abc
sub() 和 subn()
将搜索到的内容替换,sub 和 subn 用法基本一致, subn 会额外返回一个替换个数
示例:
import re a = 'asd 123 asd 143' print(re.sub('\d+','111111',a)) print(re.subn('\d+','111111',a))
>> asd 111111 asd 111111
>> ('asd 111111 asd 111111', 2)
使用分组替换示例:
import re a = '1998/06/24' print(re.sub(r'(\d+)/(\d+)/(\d+)',r'\3/\2/\1',a))
>> 24/06/1998
split() 分割字符串
基本用法和 str.split() 一致,但是可以用正则作为分隔符
split 示例:
import re a = 'asd,123,dsa,' b = 'asd,123=dsa,=fds' print(re.split('\,',a)) print(re.split('[,=]+',b))
>> ['asd', '123', 'dsa', '']
>> ['asd', '123', 'dsa', 'fds']

浙公网安备 33010602011771号