正则处理东西必须得是字符串。
1.基本的正则符号
. 匹配任意字符
\w 匹配数字字母下划线
\s 匹配空白字符
\d 匹配数字
^ 匹配字符串的开始
[^] 取反
$ 匹配字符串的结束
* 匹配0次或者多次
+ 匹配一次或者多次
? 匹配0次或者1次
2.贪婪模式
贪婪模式(.*):尝试匹配尽可能多的字符 非贪婪模式(.*?)
尝试匹配尽可能少的字符(匹配到结果就行)
3.五种函数
1.re.match()
用来判断一个字符串中的一部分是否符合正则规则要求如果符合返回一个对象,可用groups调用,如果不符合,返回None
import re
strs = '123456789'
# 从字符串开头开始匹配,匹配严格适合做过滤
result = re.match('^(\d*)$',strs)
print(result) #<re.Match object; span=(0, 12), match='1234ABC56789'>
if result:
print('是纯数字') #是纯数字
print(result.groups()) #('123456789',)
else:
print('不是纯数字')
2.re.search()
strs = '123456789'
result = re.search('[A-Z]+',strs)
print(result)
3.re.findall()
strs = "hsgjfQ#lks5\n32333d总共sg\tj43^t哈哈utr$;大地瓜ajg;g46 4j;wahj;$#ahja"
result1 = re.findall('.+?',strs,re.S)
print(result1)
result1 = re.findall('[^\w\s]+',strs,re.S)
print(result1) #['#', '^', '$;', ';', ';', ';$#']
result1 = re.findall('[0-9]{2}',strs,re.S)
print(result1) #['32', '33', '43', '46']
#第二种写法
my_com = re.compile('[0-9]{2}',re.S)
result2 = my_com.findall(strs)
print(result2)
result1 = re.findall('.*?3d(.*?)sg.*?3\^t(.*?)ut.*?r\$;(.*?)aj.*?',strs,re.S)
print(result1) #[('总共', '哈哈', '大地瓜')]
result1 = re.findall('[\u4e00-\u9fa5]+',strs,re.S)
print(result1) #['总共', '哈哈', '大地瓜']
4.re.sub()
strs = "hsgjfQ#lks5\n32333d总共sg\tj43^t哈哈utr$;大地瓜ajg;g46 4j;wahj;$#ahja"
result = re.sub('[^\w\s]','',strs)
print(result)
5.re.split()
用正则对字符串进行拆分,拆分后用于拆分的字符串消失
result = re.split('\d+',strs)
print(result)