初识正则表达式

1.字符匹配

(1)普通字符

大多数字母和字符会和自身匹配

(2)元字符

. ^   $   * + ? {} \ | () 

2.元字符理解

(1)[]用来指定字符集:[a-z],元字符在字符集中不起作用,补集匹配不在区间范围内字符

>>> st="top tip tqp twp tep"
>>> res=r"top"
>>> re.findall(res,st)
['top']
>>> res=r"t[io]p"
>>> re.findall(res,st)
['top', 'tip']

>>> res=r"t[^io]p"     #[^io]表示不包含io
>>> re.findall(res,st)
['tqp', 'twp', 'tep']

(2)^(匹配行首,在mulitiline模式匹配换行)

>>> s="hello word,hello boy"
>>> r=r"^hello"
>>> re.findall(r,s)
['hello']

 (3) $(匹配行尾)

>>> r=r"boy$"
>>> re.findall(r,s)
['boy']

(4)\(可用于取消所有元字符)

\d (匹配十进制) [0-9] ; \D(匹配非数字字符)[^0-9];\s(匹配任何空白字符) [\t\n\r\f\v]

\S(匹配任何非空白字符) [^\t\n\r\f\v];\w(匹配字母、数字)[a-zA-Z0-9_];\W(匹配非字母、数字)[^a-zA-Z0-9_]

(5)重复

>>> r=r"^010-\d{8}" #代表重复8次\d
>>> re.findall(r,"010-98707890")
['010-98707890']

(6)*(将前一个字符重复零次或多次)

>>> r=r"ab*"
>>> re.findall(r,"aaaaabbbbfffff")
['a', 'a', 'a', 'a', 'abbbb']
>>> re.findall(r,"a")
['a']

(7)+( 将前一个字符匹配一次或多次)

>>> r=r"ab+"
>>> re.findall(r,"a")
[]

(8)?(匹配一次或零次,标识某物是可选的)

>>> r=r"^010-?\d{8}$"
>>> re.findall(r,"010-98707890")
['010-98707890']
>>> re.findall(r,"01098707890")
['01098707890']
(9){m,n}(至少重复m次,至多重复n次){0,}等同于*

{1,}等同于+,{0,1}与?相同

>>> r=r"a{1,3}"
>>> re.findall(r,"01abcdaasa")
['a', 'aa', 'a']

上一篇:为什么re.findall在查找字符串中的三元组项时没有具体说明.Python


下一篇:第43天python学习re模块学习