正则表达式
概念
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
应用场景
1、登录、注册、验证手机号码等
2、爬虫
3、数据筛选
import re # 导入re模块 regex = "" re.match(regex,phone) # 不符合规则返回none # 符合规则返回对应的对象 案例: phone = "12345678901" regex = "^1[35789]\d{9}$" # {}=表示还有几个数字
字符集
下面的是一些常用的字符集,更加详细的就可以自行百度。
数量集
x* 匹配0-n个
x+ 匹配1-n个
x? 匹配0个或1个
x{m,n} 匹配m-n个
x{m,} 匹配至少m个
x{m} 匹配m个
边界符
边界符的作用就是用特定的符号来表示匹配的边界。
$ :结束符 ^ :起始符 www.baidu.com 123456www.baidu.com 1、输入数据,匹配0-100的数据,0不能是开头 regex = "^[1-9]\d$|^[0-9]$|^100$" # |是或符号,它的作用:匹配|左右两边的规则,满足其中一个即可 import re res = regex = "^[1-9]\d$|^[0-9]$|^100$" m = re.match(res,"00") print(m)
全匹配
fullmatch:不需要添加边界符,就是按照规则匹配
match:"^1[35789]\d{9}$"
fullmatch:"1[35789]\d{9}"
替换
sub:根据规则替换,返回新的字符串数据 hello123world456你好 hello*world*你好 import re say = "hello1245610233world456你好" regex = "\d+" th = "**" newsay = re.sub(regex, th, say) print(newsay)
查询
search:根据规则匹配查询数据
只会查询第一个符合规则的数据
findall,查询所有:根据规则查询所有数据,返回列表
PS:[\u4e00-\u9fa5],是中文字符的范围。
‘‘‘ 获取姓名 "路飞a索隆12E娜美A933乌索普" [路飞,索隆,娜美,乌索普] ‘‘‘ import re s = "路飞a索隆12E娜美A933乌索普" res1 = ‘[\u4e00-\u9fa5]+‘ m1 = re.findall(res1,s) print(m1)