Python的re模块,正则表达式书写方法

Pythonre模块,正则表达式

#导入re模块

import  re  

1match方法的使用:

result = re.match(正则表达式,待匹配的字符串)

正则表达式写法

第一部分:

字符

 

功能

 

.(点,英文的句号)

 

匹配任意一个字符,除了\n

 

[]

 

匹配[]中列举的字符

 

\d

 

匹配数字,即0-9

 

\D

 

匹配非数字

 

\s

 

匹配空白,即空格,tag

 

\S

 

匹配非空白

 

\w

 

匹配单词字符,即数字,小写字母,大写字母,下划线_

 

\W

 

匹配非单词字符

 

 

举例:

>>> re.match(".","&and")  #.匹配任意字符,除了\n,只要第一个匹配,后面的and都是无所谓了,match方法就是这样定义的。从字符串最左边开始匹配,只要都匹配正则表达式,字符串后面的多余部分可以随意

<_sre.SRE_Match object; span=(0, 1), match='&'>     #匹配到就有返回值,match是匹配到的具体内容,即 给一个.匹配了最左边的第一个字符&

>>> re.match(".","\n")   #不匹配,就返回None

>>> re.match("[1234][a-z][A-Z]\d","1aZ9")   #正则表达式的意思是第一个字符要满足在1-4范围内,第二个字符是小写字母a-z,第三个字符是大写字符A-Z,第四个字符是数字,后面的字符串刚好满足,所以返回了下面这串值。这里同样的1aZ9匹配,1aZ9#@@%¥也是匹配的。

<_sre.SRE_Match object; span=(0, 4), match='1aZ9'>

>> re.match("\w\W","a%224")    #第一个匹配单词字符,第二个匹配非单词字符,后面的无所谓

<_sre.SRE_Match object; span=(0, 2), match='a%'>

>>> re.match("\w\W","ab")

第二部分,个数相关:

字符

 

功能含义

 

*

 

匹配一个字符出现0次或者多次,即可有可无

 

+

 

匹配一个字符出现1次或者多次,至少出现一次

 

 

一个字符出现1次或者0次,即要么出现1次要么不出现

 

{m}

 

匹配个数,前面的字符出现了m

 

{m,}

 

匹配个数,前面的字符至少出现了m

 

{m,n}

 

匹配个数,前面的字符出现了mn

 

 

举例:

>>> re.match("\d*","1234aa")   #\d出现了0次或者多次

<_sre.SRE_Match object; span=(0, 4), match='1234'>  #匹配到的是1234

>>> re.match("\d*","abd")

<_sre.SRE_Match object; span=(0, 0), match=''>  #匹配到空字符

>>> re.match("\d+","abd")  #匹配不到,因为+意思是必须至少出现1

>>> re.match("\d{11}","18510666666")  #数字匹配11

<_sre.SRE_Match object; span=(0, 11), match='18510666666'>

# 匹配手机号,分析:手机号第一个数字必须为1,第二个数字应该是34589,第3个到第11个是任意数字,所以为:\d{9},表示9个数字,然后只能有11个数字,所以9个数字的后面加$表示匹配结束,只能匹配前面的11个数字
res = re.match(r"1[34589]\d{9}$", "13511111111")

>>> re.match("1[34589]\d{9}","12000000000")  #2个数字不满足,不匹配

>>> re.match("1[34589]\d{9}","13000000000r")  #满足,匹配

<_sre.SRE_Match object; span=(0, 11), match='13000000000'>

 

第三部分,边界相关:

字符

 

功能含义

 

^

 

表示匹配一个字符的开头

 

$

 

表示匹配一个字符的结尾

 

\b

 

匹配一个字符的边界

 

\B

 

匹配非字符边界

 

 

还是上面的例子,匹配手机号:

>>> re.match("1[34589]\d{9}","13000000000r")  #满足,匹配

上面这个正则表达式是匹配的,但是显然不对,手机号后面不应该有字母,怎么解决呢?在写完的正则表达式后加$即可

>>> re.match("1[34589]\d{9}$","13000000000r")  #不满足,不匹配

 

如果要匹配一个:D:\\python\\test,怎么办?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpjsw.html