python 正規表示式

2021-08-20 12:02:44 字數 3237 閱讀 2161

2、findall 

(返回查到的資料,不會返回位置資訊)

先引用re模組:

import re

1)、查詢指定字串: 

re.search(r'fish', 'i like fish,hhhhhhh)                #返回字串位置和要查詢的字串:span=(3, 4), match='2'

2)、查詢萬用字元(python中的萬用字元是「.」,匹配除了換行符之外的所有字元)

re.search(r'.', 'i like fish,hhhhhhh ) 

#返回第乙個字元的位置和字元:span=(0, 1), match='i'

取消「.」的萬用字元特性,加'\'

re.search(r'\.', 'i like fish,hhhhhhh )                       #返回'.'的位置

re.search(r'[.]', 'i like fish,hhhhhhh )                    #採用字元類,將"."當成乙個普通字串來處理

3)、匹配數字

re.search(r'\d\d\d', 'i like 123 fish,hhhhhhh )        #幾個\d就是匹配幾個連續的數字,\d個數多於字串中數

字個數時,匹配不到

4)、字元類,幾個字元中,匹配到任意乙個,即匹配成功

(字元類:將中括號中的資料當成乙個普通的字串來處理,除了個別特殊情況)

re.search(r'[aeiou]',  'i like 123 fish,hhhhhhh)       #匹配到aeiou中的任意乙個即可,返回字串中匹配到的第一

個字元的位置,和字元

re.search(r'[0-9]' , 'i like 123 fish,hhhhhhh )         #匹配0-9數字中的任意乙個,

正規表示式匹配的是字串,數字對於字串只有0-9組成;9以上的,表示兩個或更多個字元

舉例:re.search(r'[0-255]','236')   #匹配的是0-2、5,即匹配0,、1、2、5幾個鐘的任意乙個

多次匹配:

re.search(r'ab

c', 'abbbbbbbbbc')                #匹配有2-10個b的abc

5)、匹配 ip位址

1、re.search(r'[01]\d\d|2[0-4]\d|25[0-5]','136')    

#雛形,匹配乙個指定範圍內的數字

#解析:1、[01]\d\d:第一位數字是0或1的三位數

2、2[0-4]\d

:第一位數字是2,第二位是0、1、2、3、4的三位數

3、25[0-5]:第一位是2,第二位是5,第三位是0、1、2、3、4、5的三位數

查詢乙個三位數是1 或 2 或 3三種情況中的任意一種

2、re.search(r'(([01]\d\d|2[0-4]\d|25[0-5])\.)

([01]\d\d|2[0-4]\d|25[0-5])','192.186.1.1')

#[01]\d  :表示第一位第二位數字出現次數可以是0次或1次,避免了1位數匹配不到的情況

#  :重複三次

公升級版:(search) 

re.search(r'((

[01]?\d?\d|2[0-4]\d|25[0-5])\.

)([01]?\d?\d|2[0-4]\d|25[0-5])','192.186.1.1')

#  ?   : 表示重複0次或者1次

公升級版:

(findall

)re.search(r'

(?:

(?:

[01]?

\d?

\d|2[0-4]\d|25[0-5])\.

)(?:

[01]?\d?\d|2[0-4]\d|25[0-5])','192.186.1.1')

# ?:     :取消元祖獲取資料

6 )、元字元(  .  ^  $  *  +  ?    ( )  [ ]  |  \    )

1、| (或)

re.search(r"fish(c|d)","like fishc")

2、^ (以xx開頭)

re.search(r"^fish", "fishc.com")

re.search(r"[^a-z]", "fishc.com")     

#返回除了a-z的字元,取反

re.search(r"[a-z^]", "fishc.com")        #返回在a-z範圍內的字元

3、$ (以xx結尾)

re.search(r"fish$"," i like fish") 4、

re.search(r"fish(3)"," i like fishfishfish")      

#匹配fishfishfish

re.search(r"fish(1,3)"," i like fishfish")            #匹配fish1到3個就可以

5、   *   +   ?

*:匹配前面的表示式

0或多次

+:匹配前面的表示式

1或多次

?:  

匹配前面的表示式

0或1次

可與「.」合用,

在最後加上「?」,可以只找第乙個

p = re.compile(r"[a-z]")

p.search("i like fish")

正規表示式忽略空格:

p = re.compile(r"[a-z]  [0-9]", re.verbose)

p.search("i like li8")

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...