【python】模块——正则表达式
一、字符分类
1.普通字符:1,2,3,a,b,等
2.元字符: . $ * + ? {} () [] | \
二、元字符
1.通配符——点 .
匹配规则:匹配任意字符
匹配规则:a.c
匹配字符:abcadcalc
结果:abc adc alc
2. ^
匹配规则:只匹配开头字符
匹配规则:^a.c
匹配字符:abcadcalc
结果:abc
3. $
匹配规则:只匹配结尾字符
匹配规则:$a.c
匹配字符:abcadcalc
结果:alc
4.重复符—— * +
匹配规则:
(1) * 重复0到无穷次
匹配规则:abc* c重复0到无穷次,即匹配:ab,abc abcc,abccc等
匹配字符:abcccababc
结果:abccc ab abc
(2) + 重复1到无穷次
匹配规则:abc+ c重复1到无穷次,即匹配:abc, abcc,abccc等
匹配字符:abcccababc
结果:abccc abc
注意:以上是贪婪模式,即当出现abccc时,会按匹配最长的字符:abccc。非贪婪模式则会匹配最短的字符(以*为例)——ab
(3)非贪婪模式(* + 原理一样)
匹配规则:abc+? c重复1次
匹配字符:abcccababc
结果:abc abc
5. ?
匹配规则:匹配0次或者1次
匹配规则:abc? c重复0到1次,即匹配:ab,abc等
匹配字符:abcccababc
结果:abc ab abc
6. {} 自定义匹配次数 {0,}表示匹配0到无穷次,{0,1}表示匹配0次或者1次,{1}表示匹配1次
匹配规则:abc{0,3} c重复0到1次,即匹配:ab,abc等
匹配字符:abcccababc
结果:abccc ab abc
7.字符集——[]
匹配规则:匹配字符集中的任意一个字符,例如x[yz],可以匹配xy和xz
在字符集中- ^ \有特殊含义
-表示范围,例如:[a-z]表示匹配a到z的字母,[0-9]表示匹配0到9的数字
^表示非,例如:[^a-z]表示不匹配a到z的字母
\表示转义,例如:只匹配. 需要写成[\.],如果写成[.]则表示匹配所有字符
8.转义符——\
注意:
(1)在python正则中,有两次转义,一次是python解释器的转义,一次是正则模块的转义
(2)r"a\."表示原生字符,即在python解释器中不转义,只需要在正则中转义一次、
#\d匹配任何十进制数,它相当于类[0-9]。 #\D匹配任何非数字字符。它相当于类[^0-9]。 #\s由匹配任何空白字符,它相当于类[ \t\n\r\fVv]。 #\S匹配任信非空白字符,它相当于类[ \t\n\r\f\w]。 #\w匹配任何字母数字字符,它相当于类[a-zA-Z0-9 ]。 #\W匹配任何非宇母数字字符1它相当于类[0-2A-Z0-9 ]。 #\b匹配一个特殊字符边界。比如空格 & #等
'\\\\' 等价于 r'\\' '\\b' 等价于 r'\b'
9.管道符—— |
匹配规则:或运算,分别匹配管道符两边的字符
匹配规则:r'ab|c' 匹配字符:defgab|c 结果:ab c
10.分组符——()
语法:(?P<name>匹配规则)
import re a = '(?P<name>[a-z]+)(?P<age>[0-9]{1,3})' b = 'anny12hbsagerfubgb' c = re.search(a,b).group(name)#只找一个 print(c) #结果:anny
三、常用匹配
1.IP:
^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$
2.手机号:
^1[3|4|5|8][0-9]\d{8}$
3.邮箱:
[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+
————————————————————结束————————————————————
浙公网安备 33010602011771号