正则

2019年5月1日17:52:59 发表评论 1,139 views

大写取反\D表示不要数字

 

import re

a = 'python123python666python888'

print(re.findall('python',a)) #返回值是一个列表

print(re.findall('123',a))

print(re.findall('999',a))  #如果匹配值不存在返回一个孔列表

 

a = 'python123python666python888'

>>> import re

>>> re.match('python',a)

<_sre.SRE_Match object; span=(0, 6), match='python'>

>>> re.match('python123',a)

<_sre.SRE_Match object; span=(0, 9), match='python123'>

>>> bb = re.match('python',a)

>>> bb.group() #group查看匹配到的字符

'python'

>>> bb.span()  #span()查看匹配字符下标取值区间

(0, 6)

>>> print(re.match('python',a))

<_sre.SRE_Match object; span=(0, 6), match='python'>

>>> print(bb)

<_sre.SRE_Match object; span=(0, 6), match='python'>

>>>

 

 

 

re.matchre.search区别

re.match只匹配字符串的开始位置找,如果字符串开始不符合正则表达式,则匹配失败,

re.search匹配整个字符串,如果一直找不到则,返回是空的,没有结果

 

 

 

 

元字符:

. 匹配任意一个字符(除了\n)

[] 匹配[]中列举的字符

\d 匹配数字,即0-9

\D 匹配非数字,即不是数字

\s 匹配空白,即空格,tab键

\S 匹配非空白

\w 匹配单词字符,即a-z,A-Z,0-9,_

\W 匹配非单词字符

 

 

代表数量的元字符:

[*] 星号匹配前一个字符出现0次或者无限次,可有可无

+  加号匹配前一个字符出现1次或者无限次,即至少有一次

?  问号匹配前一个字符出现1次或者0次,即要么有一次,要么没有。

{m}  大括号加m,匹配前一个字符出现m次

{m,}  大括号加m,匹配前一个字符至少出现m次

{m,n} 大括号加m,n,匹配前一个字符出现从m到n次。包括m和n次

 

 

 

表示边界的元字符:

^    匹配字符开头

$    匹配字符结尾

\b     匹配一个单词的边界

\B     匹配非单词边界

 

 

 

分组匹配

|       匹配左右任意一个表达式

(ab)    将括号中字符作为一个分组

 

 

 

 

 

 

 

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: