python 正規表示式

2021-10-02 07:14:16 字數 3047 閱讀 2849

1、 匹配所有的數字[0-9]

匹配所有的字母[a-z]

匹配所有的大寫字母 [a-z]

匹配所有數字字母 [0-9a-za-z]

2、元字元

\d 是匹配所有數字

\w 是配置所有的數字字母下劃線還有中文

\s 是匹配所有的空白符 製表符 換行符

\n 匹配回車

\t 匹配tab

\d 匹配所有非數字

\w 匹配 所有非數字字母 下劃線

\s 匹配所有非空白

. 匹配處了換行符之外的人任意乙個字元

^ 匹配乙個字串的開始

$ 匹配乙個字串的結束

[abc123] 匹配abc123 這幾個字元

[^abc123] 匹配除了abc123 的所有字元

[^ ] 匹配非空字元

| 或得關係 例如:alex|wusi

() 用來規範字元的範圍

注釋 :^alex|alexerer$ 這樣寫的話 alex1223445 也會匹配

^(alex|alexer)$ 這樣寫的話 alex122344 就不會在匹配了 只匹配alex

3、 量詞

匹配n 次

匹配至少n次

匹配n-m 次

? 0 或者1次

+ 1-無窮大

* 0-無窮大

4、 匹配手機號 1[2-9]\d

匹配任意正整數 [1-9]\d*\

匹配任意的小數 \d+\.\d+

匹配整數或者小數 \d+(\.\d+)?

5 、 re 正則

import re

ret= re.findall('\d','hello1234556') ######前面是規則後面是要匹配的字串

print(ret) ###返回結果['123456', '12334']

ret1 = re.search('\d','hello123,word456') ###### 只匹配從左到右第乙個 匹配項

print(ret1) #### 返回結果是 為乙個變數 需要用group獲取值

print(ret1.group()) #####返回結果是1

上述兩個的區別就是:

import re

phone_num = input("請輸入手機號:")

regex = r'^1[2-9]\d$'

ret = re.search(regex,phone_num)

ret1 = re.findall(regex,phone_num)

if ret :

print("合法手機號")

else:

print("不是合法的手機號")

#如果input 輸入的是 1372345345678 使用find_all 就會顯示 空列表

#如果上述方式 使用的是search 就會返回none

re.match(r『\d+』,r'84alex') #用match 的話 預設自帶^預設就是匹配以數字給開頭的,如果 匹配『alex84』 還匹配不到

find_all(正規表示式,帶匹配的字串 )

功能是:取所有

返回值:列表 所有匹配到的項都會返回到列表中

import re

phone_num = input("請輸入手機號:")

regex = r'^1[2-9]\d$'

ret1 = re.findall(regex,phone_num)

print(ret1)

search( 正規表示式,帶匹配的字串 )

功能是: 從頭開始往後找任何地方有符合條件的都返回乙個

返回值:re 自定義型別

import re

phone_num = input("請輸入手機號:")

regex = r'^1[2-9]\d$'

ret = re.search(regex,phone_num)

print(ret)

match(正則 表示式,帶匹配的字串) #####匹配使用者輸入的時候,都用是match

功能是: 從從頭開始匹配,如果開始 匹配到了 就是匹配成功了,如果開始部門沒有 匹配到,就 匹配失敗

返回值:re自定義型別

re.split(「正則」,帶匹配的字串)

ret = re.split(r'\d+',r'alexx875wusi')

print(ret)

返回為:['alexx', 'wusi'] 把數字給切出去了

替換方法:

re.sub( 正則 替換的後的字串,替換前的字串)

ret = re.sub(r'\d+','h',r'alex345wusi23')

print(ret)

返回結果為:alexhwusih

re.sub( 正則 替換的字串,替換前的字串)

ret = re.sub(r'\d+','h',r'alex345wusi23')

print(ret)

返回結果為:('alexhwusih', 2) ####替換後的結果和替換的次數

正規表示式分組命名(?p《組名》正規表示式) 給這個分組內的正規表示式起乙個名字

等後面匹配出完整結果之後通過.group('組名') 就可以獲得這個分組中匹配的內容

例如:

import re

ret = re.search('\d\d','alex3714')

print(ret.group())

輸出37

import re

ret = re.search('\d(?p\d)','alex3714')

print(ret.group('sedn'))

這樣相當於給7乙個sedn分組,這樣輸出就是7

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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...