正規表示式re模組基礎用法

2021-10-05 23:33:28 字數 3644 閱讀 6989

ret = re.match(r"速度與激情\d", 「速度與激情5」)

1.使用反斜槓d 可以使使用者輸入任意的一位數字,當使用者需要查詢速度與激情55時

\d\d兩個反斜槓d就可以解決

2.也可以使用 [1234567] ,這樣使用者輸入的值就只能在這裡面匹配了

或輸入 [1-7],與上述一致,也是1到7數字

或輸入 [1-36-8],即使用者輸入1到3,6到8符合規則

或輸入 [1-8abcd] 即使用者輸入 1到8數字或者 a-d字母 符合規則

如果 中沒有 9,使用者輸入了9 那麼沒有返回值,即使用者輸入的值,不符合要求

3.\w 匹配 0-9, a-z ,a-z,中文,都可以,即字母、數字、下劃線、漢字

4.\s 匹配空白字元 即:空格,tab鍵

5.\d 匹配非數字, \s 匹配非空白 ,\w 匹配非單詞 也就是與小寫的自己相反

6. . 點 匹配任意字元,除\n ,最為寬廣,. 意味只能輸入.

注意:以上用法,只能匹配乙個字元

# 匹配1

-2位任意數字

ret = re.

match

(r"\d"

,"22").

group()

# 匹配3位數字, 少一位都不行

ret = re.

match

(r"\d"

,"666").

group

()

re.match(r"速度與激情\d", 「速度與激情5」).group()

\d: 如此限制,使用者可以輸入1-2位任意數字

即:re.match(r"速度與激情\d", 「速度與激情5」).group() 成立

re.match(r"速度與激情\d", 「速度與激情55」).group() 成立

re.match(r"\d", 「12345678901」).group()

即:限制輸入 11位數字 ,多和少都不行

?的作用:

re.match(r"021-?\d", 「02112345678」).group()

輸出: 『02112345678』

re.match(r"021-?\d", 「021-12345678」).group()

輸出: 『021-12345678』

即: ?匹配前乙個字元出現1次或者0次,要麼有1次,要麼沒有,也不允許多

4.* 的作用:*

即:匹配前乙個字元出現0次 或者無限次,即可有可無

5.+ 的作用:

即:匹配前乙個字元出現1次或者無限次,即至少有一次

注意:最重要的是,{} 一定要基於前面的條件,若前面無條件,則不能使用

大括號{} 前的條件是什麼就要滿足 比如\d{} 即滿足連續的數字

a,即連續的3個大a

注意:match()方法,自帶匹配判斷 開頭,但是其沒有判斷結尾

$ 作用:

匹配字串結尾

^作用:

匹配字串結尾

規範寫法:ret = re.match(r"^[a-za-z_][a-za-z_0-9]*$", name)

前後都需要加上 ^,$

1.在@前 有4-20位

2.字尾統一 @163.com

re.match(r"^[a-za-z_0-9]@163\.com$", email)
問題:點 . 在使用中意味隨意任何字元都行,除\n 則:laowang@163acom 符合規範

此時使用 . 可以使 使用者只能輸入 .點 ,達到需求

注意:如果在正規表示式中,需要用到 . ? 等,僅僅需要在他們前面新增乙個 反斜槓\ 進行轉義

ret = re.

match

(r"^[a-za-z_0-9]@163|135\.com$"

,"[email protected]"

)

輸出:laowang@163

注意:不會輸出 .com

ret = re.match(r"^[a-za-z_0-9]@(163|126)\.com$", content)
新增括號(a|b|c)。。。就可以識別 a,b,c

將括號中字元作為乙個分組

可以使用 返回值.group(1) 取到 括號裡的值,但是,這個值是基於 正則匹配成功的值

例:[email protected] ,則返回值.group(1) 為163

例:[email protected], 則返回值.group(1) 為126

同樣,可以括號多個來取不同的值

例:ret = re.

match

(r"^([a-za-z_0-9])@(163|126)\.com$"

,"[email protected]"

)

在 前加括號,返回值.group(1) 就是 laowang,返回值.group(2) 為126

引用分組num匹配到的字串

ret = re.match(r"<(\w*)>.*", "")

print(ret.group())

輸出:<(\w*)> 匹配

同理:

ret =re.match(r"<(\w*)><(\w*)>.*", "")

print(ret.group())

輸出:

兩兩對應。

1.search方法作用可否變成 match方法,只要在ret = re.search(r"^\d+", 「閱讀:99999,點讚1000」)

開頭加上 ^ 從頭開始查詢,但是程式會掛。

2.findall作用

ret = re.findall(r"\d+", 「閱讀99999,點讚1000」)

print(ret)

輸出:[『99999』, 『1000』] 是乙個列表

注意:不能再使用 group() 方法顯示

3.sub將匹配到的資料替換

ret = re.sub(r"\d+",「1024」, 「閱讀99999,點讚1000,你好」)

print(ret)

輸出:閱讀1024,點讚1024,你好 —是乙個字串

把符合要求的地方替換為1024,並且返回整個字串

擴充套件:ret = re.sub(r"\d+", add, 「點讚數 = 99」)

sub方法可以 使引數裡面 新增函式引用

4.split 根據匹配進行切割字串,並返回乙個列表

ret = re.split(r":| ", "info:zhalao 33 1000 shandong:2")

print(ret)

輸出:['info', 'zhalao', '33', '1000', 'shandong', '2']---返回乙個列表

使用 冒號:或者 空格 切割。

博主萌新,不足之處望各位之處

此篇文章基於python re模組

re 正規表示式模組

import re 預定義字符集 d 數字 0 9 d 非數字 d s 空白字元 空格 t r n f v s 非空白字元 s w 單詞字元 a za z0 9 w 非單詞字元 w 匹配數量 匹配除換行符以外的任何單個字元 匹配前乙個字元0或無限次 盡可能多的匹配 盡可能少的進行匹配前邊的正規表示式...

正規表示式 re模組

re是python中的正規表示式模組,正則也是每個人程式設計之路上必備的基礎技能。這部落格希望即便從來沒接觸過的人看了也會使用正規表示式字元 含義.匹配除了換行符外的任何字元。可以用re.dotall來設定匹配任何字元,包括換行符 丨a丨b 表示正規表示式匹配a或者b 匹配輸入字串開始的位置,如果設...

正規表示式re模組

正規表示式re模組 編譯正規表示式模式,返回乙個物件的模式。可以把那些常用的正規表示式編譯成正規表示式物件,這樣可以提高一點效率。1 compile 格式 re.compile pattern,flags 0 pattern 編譯時用的表示式字串。flags 編譯標誌位,用於修改正規表示式的匹配方式...