【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_-]+)+

 

————————————————————结束————————————————————

posted on 2018-07-23 16:21  索米尔  阅读(73)  评论(0)    收藏  举报

导航