普通字符 ,元字符
根据业务场景选择元字符
字符或:[]
[ac] :a 或者c
[^cfd] :不是c,或者不是f 或者不是d
[c-f] 匹配c-f之间的字符
概括字符集
数字字符[0-9]:\d
非数字字符[^0-9]:\D
数字\字母[A-Za-z0-9_]:\w
非单词字符[' ' '\t' ,'&' ,'\n' ,'\r']:\W
空白字符[' ' '\t' ,'\n' ,'\r']:\s
匹配除\n之外的所有字符:.
贪婪非贪婪匹配
[a-z]{3} 表示匹配3个a-z字符
[a-z]{3,6} [a-z] 重复3-6次 默认贪婪匹配
[a-z]{3,6}? [a-z] 重复3-6次 非贪婪匹配
数量词
* 匹配0次或者无限多次
+ 匹配1次或者无限多次
?匹配0次或者1次
边界匹配
'^ $'
'^' 字符串开始匹配
'$' 字符串末尾
组的概念
(python){3}(js)
() 且的关系
[] 或的关系
匹配模式参数
re.findall('c#',language,re.I | re.S) #两种模式都满足
查找并替换,函数当参数
re.sub
s = 'A123b333'
def convert(value):
matched = value.group()
if int(matched) >=6:
return '9'
else :
return '0'
r = re.sub('\d',convert,s,count=0)
match,search
r= re.match('\d' ,s) # match尝试从字符串开始位置匹配
r1 = re.search('\d',s) # search 会尝试从整个字符串搜索
一旦找到停止匹配---同findall区别
group
s= 'life is short,i use python'
r = re.search('life(.*)python',s)
print(r.group(0)) # 完整匹配结果
print(r.group(1))
print(r.group(0,1,2)) # 元组
r1 = re.findall('life(.*)python',s)