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$"
)
輸出: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$"
)
在 前加括號,返回值.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 編譯標誌位,用於修改正規表示式的匹配方式...