正则表达式的语法
1.什么是正则表达式
正则表达式就是:字符串匹配的模式;如果你接触过数据库开发,那么你必定知道什么是模糊查找,而正则就是一种类似模糊查找的,一串表达式…如果你没有接触过模糊查找,那也没关系,这篇文章将带你了解一下正则
2.我们在哪里见过它?
当我们来到一个网站,进行登陆时网站的账号名为你的邮箱时,就需要用到正则表达式来判断用户输入的一串字符是否符合邮箱的格式;
当我们想要修改密码时,某客户端要求你的新密码必须包含字母数字下划线,三种中的两种时,也使用的时正则表达式…等等很多场景种都需要正则表达式
3.怎么用它?
符号 | 含义 | 举例 | 含义(加粗的为匹配到的结果) |
---|---|---|---|
[ ] | 匹配所有[ ]中的字符 | [ABC] | AbCDEAa |
[^ ] | 匹配除了[]的所有字符 | [^ABC] | aBCd EAa |
[A-Z] | 匹配A到Z,-代表一个区间 | [a-z] | abcdefghijk |
. | 匹配\n和\r之外的单个字符 | [.] | 相当于[^\n\r] |
[\s\S] | 匹配所有 | \ | \ |
\w | 匹配所有的字母数字下划线 | \ | \ |
非打印符:
符号 | 含义 |
---|---|
\n | 匹配一个换行符 |
\f | 匹配一个换页符 |
\r | 匹配一个回车符 |
\s | 匹配任何空白符 |
\S | 匹配任何非空白符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
限定符:
符号 | 含义 |
---|---|
* | 匹配前面的子表达式0个或多个 |
+ | 匹配前面的子表达式1个或多个 |
? | 匹配前面的子表达式0次或1次 |
注意:
1.限定符出现在范围表达式之后时,它应用于整个范围表达式
2.* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
4.案例
1.常见的邮箱匹配
if re.match(r'^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$', "153522217@qq.com"):
print("匹配5")
2.常见的手机号匹配
if re.match(r'^(13[0-9])|(14[57])|(15[0-35-9])|(17[78])|(18[0-9])\d{8}$','14578789090'):
print('匹配6')
3.常见的身份证号匹配(18位)
if re.match(r'^[1-9]\d{5}(18|19|[23]\d)\d{2}[0-1][0-9][0-3][0-9]\d{3}[0-9Xx]$','12345619900909889x'):
print('匹配7')