Python re模块

re模块:通过正则表达式匹配字符串

1.字符组

字符组用[]表示;

枚举法:匹配数字  [0123456789];

[0-9]与[0123456789]相同,‘-’表示范围; 
[A
-Z],[a-z]分别表示A到Z的大写字母和a到z的小写字母 [0-9A-Za-z]

 

 

2.字符

 

 
元字符
 
匹配内容
匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W
匹配非字母或数字或下划线
\D
匹配非数字
\S
匹配非空白符
a|b
匹配字符a或字符b
()
匹配括号内的表达式,也表示一个组
[...]
匹配字符组中的字符
[^...]
匹配除了字符组中字符的所有字符

 

3.量词

量词
用法说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

 

 

4.用法

'''
\d ->[0-9] :表示包含一个数字,\d+:表示最少包含一个数字,\d*:表示包含0到多个数字,\d?:表示包含0个或一个数字
\w ->[0-9A-Za-z]:表示包含一个数字或者字母,同理上述
\s 一位空白字符
+  最少一个
*  零到多个
?  零或一个 
[...] 表示一组字符,单独列出
(?:re) 类似(...)
(?=re) 前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前位置成功匹配时成功,否则失败。\
        但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
合在一起就是 取尽量少的任意字符,一般不会这么单独写,大多用在:
.*?x   就是取前面任意长度的字符,直到一个x出现

'''

 



# 密码必须包含字母,数字,特殊字符
print(re.match('^(?:(?=.*[A-Za-z])(?=.*[0-9])(?=.*[~!@#$%^&*()_+\-=<>.,/])).*$','hhw-3freSrwe'))


# 匹配手机号
print(re.match('^1[356789][0-9]{9}','15555555555'))


# 匹配邮箱
print(re.match('^[0-9a-zA-Z_]{1,19}@[0-9a-zA-Z]{1,13}\.[a-z]{2,}$','w@qq.cn'))

 

posted on 2020-09-17 16:29  HHMLXL  阅读(112)  评论(0)    收藏  举报

导航