正則表達式-常用元字符的基本使用

常用元字符有:

[]  ^  $  \  *  +  ?  {} .

python中使用正則表達式需要導入re模塊

下面介紹用法

[] 指定一個字符集,[ABC]表示ABC的字符集,[^ABC] 取反,除了ABC的字符集。

>>> import re
>>> r = r"ABC[ABC]" #定義一個正則
>>>
>>> re.findall(r,'ABCA') #使用findall進行匹配
['ABCA']
>>> re.findall(r,'ABCB')
['ABCB']
>>> re.findall(r,'ABCD')
[]
>>> r = r"ABC[^ABC]" #取反
>>> re.findall(r,'ABCD')
['ABCD']
>>> re.findall(r,'ABCA')
[]
>>>

^ 匹配行首 ^h 如果行首是h,則返回h,如果不是h則返回空

'''
遇到問題沒人解答?小編創建了一個Python學習交流QQ羣:579817333 
尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書!
'''
>>> r = r"^h"
>>> re.findall(r,'hello')
['h']
>>> re.findall(r,'ehllo')
[]
>>>

$ 匹配行尾,和^是反着來的,不難理解,匹配末尾

>>> r = r"h$"
>>> re.findall(r,'hello')
[]
>>> re.findall(r,'olleh')
['h']
>>>

\ 轉義字符

反斜槓後面加不同的字符以表示不同的特殊含義

\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]
'''
遇到問題沒人解答?小編創建了一個Python學習交流QQ羣:579817333 
尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書!
'''
>>> r1 = r"day=\d"
>>> r2 = r"day=\D"
>>> st = 'day=1 day=2 day=3 day=a day=b day=c'
>>> re.findall(r1,st)
['day=1', 'day=2', 'day=3']
>>> re.findall(r2,st)
['day=a', 'day=b', 'day=c']
>>>
>>> r3 = r"enter=\s"
>>> r4 = r"enter=\S"
>>>
>>> st = '''
enter=
enter=1 enter=  enter=3 enter=
enter=
'''
>>> re.findall(r3,st)
['enter=\n', 'enter= ', 'enter=\n', 'enter=\n']
>>> re.findall(r4,st)
['enter=1', 'enter=3']
>>>
>>> r5 = r"\w"
>>> r6 = r"\W"
>>> st = 'abcdefg1234567!@#$%^&'
>>> re.findall(r5,st)
['a', 'b', 'c', 'd', 'e', 'f', 'g', '1', '2', '3', '4', '5', '6', '7']
>>> re.findall(r6,st)
['!', '@', '#', '$', '%', '^', '&']
>>>

*+ ? 都是重複的意思

*重複0次或多次、+重複1次或多次、?重複0次或1次

'''
遇到問題沒人解答?小編創建了一個Python學習交流QQ羣:579817333 
尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書!
'''
>>> r1 = r"ab*"
>>> re.findall(r1,'a')
['a']
>>> re.findall(r1,'ab')
['ab']
>>> re.findall(r1,'abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb')
['abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb']
>>>
>>> r2 = r"ab+"
>>> re.findall(r2,'ab')
['ab']
>>> re.findall(r2,'a')
[]
>>> re.findall(r2,'abbbbbbbbbbbbbbbbbbbbbbbbbbbbb')
['abbbbbbbbbbbbbbbbbbbbbbbbbbbbb']
>>>
>>> r3 = r"ab?"
>>> re.findall(r3,'a')
['a']
>>> re.findall(r3,'ab')
['ab']
>>> re.findall(r3,'abb')
['ab']
>>> re.findall(r3,'abbbbbbbbbb')
['ab']
>>>

{}表示重複的範圍,{m,n}最少重複m次,最多重複n次

舉個成績的例子吧,最少1位,最多2位。

'''
遇到問題沒人解答?小編創建了一個Python學習交流QQ羣:579817333 
尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書!
'''
>>> r1 = r"\d{1,3}"
>>> re.findall(r1,'100')
['100']
>>> re.findall(r1,'1')
['1']
>>> re.findall(r1,'')
[]
>>> re.findall(r1,'1000')
['100', '0']
>>> re.findall(r1,'1001')
['100', '1']
>>>

它會把多餘的位扔到列表的後面元素中。

.

.的用法就是匹配所有,看下面例子即可

.*是匹配0次或多次,.+是1次或多次,一般用+

>>> r1 = r"src=.*"
>>> re.findall(r1,'src=img http qwerqwer')
['src=img http qwerqwer']
>>> re.findall(r1,'src=img http hello')
['src=img http hello']
>>>
>>> r1 = r".*.com"
>>> re.findall(r1,'www.com')
['www.com']
>>> re.findall(r1,'hello.com')
['hello.com']
>>>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章