作用:主要用于数据的查找与筛选
需求
编写代码校验用户输入的手机号是否合法
# num= input('请输入您的手机号>>>:').strip()
# if num.isdigit():
# if len(num) == 11:
# if num.startswith('13') or num.startswith('15')or
# num.startswith('18')or num.startswith('19')
# num = int(num)
# print('手机号正确')
# else:
# print('手机号开头不对')
# else:
# print('手机号不是11位')
# else:
# print('手机号不是数字')
#正则表达式
import re
num= input('请输入您的手机号>>>:').strip()
if re.match('^[13|15|17|18|19][0-9]{9}',num):
print(num)
else:
print('输入不正确')
^
#匹配字符串的开始
[0-9]#数字是0到9之间
{9}#除去除的开头数字还有9位数。一共11位数
官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式之特殊符号 字符| 元字符 | 匹配内容 |
|---|---|
| . | 匹配除换行符以外的任意字符 |
| w | 匹配字母或数字或下划线 |
| W | 匹配非字母或数字或下划线 |
| d | 匹配数字 |
| () | 匹配括号内的表达式,也表示一个组 |
| n | 匹配一个换行符 |
| b | 匹配一个单词的结尾 |
| D | 匹配非数字 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结尾 |
| 量词 | 用法说明 |
|---|---|
| * | 重复零次或更多次((默认就是尽可能多) |
| + | 重复一次或更多次(默认就是尽可能多) |
| ? | 重复零次或一次(默认就是一次) |
| {n} | 重复n次 |
| {n,} | 重复n次或更多次 |
| {n,m} | 重复n到m次 |
| 正则 | 待匹配字符 | 匹配结果 |
|---|---|---|
| 海. | 海燕海娇海东 | 海燕海娇海东(匹配所有"海."的字符) |
| ^海. | 海燕海娇海东 | 海燕(只从开头匹配"海.") |
| 海.$ | 海燕海娇海东 | 海东(只匹配结尾的"海.$") |
| 李.? | 李杰和李莲英和李二棍子 | 李杰 李莲 李二(?表示重复零次或一次,即只匹配"李"后面一个任意字符) |
| 李.* | 李杰和李莲英和李二棍子 | 李杰和李莲英和李二棍子(*表示重复零次或多次,即匹配"李"后面0或多个任意字符) |
| 李.+ | 李杰和李莲英和李二棍子 | 李杰和李莲英和李二棍子(+表示重复一次或多次,即只匹配"李"后面1个或多个任意字符) |
| 李.{1,2} | 李杰和李莲英和李二棍子 | 李杰和 李莲英 李二棍({1,2}匹配1到2次任意字符) |
| 李.*? | 李杰和李莲英和李二棍子 | 李 李 李 (惰性匹配) |
| [d] | 456bdha3 | 4 5 6 3 (表示匹配任意一个数字,匹配到4个结果) |
| [d]+ | 456bdha3 | 456 3 (表示匹配任意个数字,匹配到2个结果) |
待匹配的文本:
“”"
所有的量词默认都是贪婪匹配 但是如果在量词的后面紧跟一个问号
那么就会变成非贪婪匹配
小技巧:以后我们在使用贪婪匹配或者非贪婪匹配的时候一般都是用.或者.?
并且结束的标志有上述符号左右两边添加的表达式决定
“”"
正则表达式中取消斜杠与字母的特殊含义 就是在斜杠前面加斜杠
n n
\n n
在python中有更加简便的写法
r’n’
r’n’



