一、认识正则表达式
1. 什么是正则表达式 - 一种可以让复杂的字符串问题变得简单的工具
1)案例1: 判断输入的内容是否是一个合法的手机号码
要求: a. 长度11位 b.全部都是数字字符 c.第一位是1 d. 第二位:3~9
tel = ‘783243822’
方法1:不使用正则
if len(tel) == 11:
if tel[0] == '1' and tel[1] in '3456789':
flag = True
for x in tel[2:]:
if not '0' <= x <= '9':
flag = False
break
if flag:
print('合法')
else:
print('不合法')
else:
print('不合法')
else:
print('不合法')
方法2:使用正则表达式
from re import fullmatch
result = fullmatch(r'1[3-9]\d{9}', tel)
if result:
print('合法')
else:
print('不合法')
2)案例2: 提取字符串中所有的数字字串
message = ‘年龄:18岁, 身高:179, 体重:120斤, 月薪:3000元, 房租:1000元’
[‘18’, ‘170’, ‘120’, ‘3000’, ‘1000’]
方法1: 不使用正则
result = []
str1 = ''
for x in message:
if '0' <= x <= '9':
str1 += x
else:
if str1:
result.append(str1)
str1 = ''
if str1:
result.append(str1)
print(result)
方法2:使用正则
from re import findall
result = findall(r'\d+', message) #\d+ 连续出现的数字
print(result)
二、匹配类符号
from re import fullmatch
1. fullmatch函数
fullmatch(正则表达式, 字符串) - 判断字符串是否满足正则表达式描述的规则,如果不满足,结果就是None
不管使用正则表达式解决什么样的字符串问题,写正则的时候都是在描述字符串规则
2. 所有匹配类符号
1) 普通符号 - 在正则表达式中表示本身的字符就是普通符号
result = fullmatch(r'abc','abc')
print(result)
2) . - 匹配任意一个字符
result =