正则表达式总结
正则表达式的语法里面分为字符、预定义字符、数量词、边界匹配、逻辑分组、特殊构造,如图:
先介绍Python中支持正则表达式的re
模块中的方法,使用什么函数都大同小异,重要的是正则表达式。
函数 | 描述 |
---|---|
compile(pattern) | 返回一个匹配完模式的对象 |
search(pattern, string) | 在字符串中搜索模式 |
match(pattern, string) | 从字符串开始匹配模式 |
split(pattern, string) | 根据模式来分隔字符串 |
findall(pattern, string) | 在字符串中找出所有匹配模式的 |
sub(pattern, replace, string) | 在字符串中找出所有匹配模式的并且用replace来替换 |
escape(string) | 特殊字符转义 |
比如说邮箱,我们分析它的结构,其是一个前面为字符和数字组成,中间一个@,跟着字符和数字,后面是.com组成。所以简单的来写就是(\w+)*@(\w+)*\.com
,考虑到如果字符和数字中间可能会允许-
或者.
的存在,所以可以写为\w+([-+.]\w+)*@\w+([-.]\w+)*\.com
import re
ma = re.search('\w+([-+.]\w+)*@\w+([-.]\w+)*\.com', 'aq1#$125vqr&qqw.eq+we2@qq.comsadasd')
print(ma.group()) # qqw.eq+we2@qq.com
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
[\u4e00-\u9fa5]{0,}$
\d+\.\d+\.\d+\.\d+
^\d{4}-\d{1,2}-\d{1,2}
密码(以字母开头,长度在 6~18 之间,只能包含字母、数字和下划线)
^[a-zA-Z]\w{5,17}$
当然还有很多,大家在匹配的时候具体问题具体分析,参考前面提到的那种图片。