9 正則和re模組

2022-08-02 08:54:12 字數 2111 閱讀 9536

目錄二、re模組

正規表示式:一些有特殊含義的字元組合到一起,形成一套規則,用於匹配字串的。

用途:1、檢測字串是否合法2、從大檔案中找到符合規則的內容放到字元組和非字元組中表示所有

'.'     預設匹配除\n之外的任意乙個字元

'^' 匹配字元開頭

'$' 匹配字元結尾

'*' 匹配*號前的字元0次或多次

'+' 匹配前乙個字元1次或多次

'?' 匹配前乙個字元1次或0次

'' 匹配前乙個字元m次

'' 匹配前乙個字元n到m次

'|' 匹配|左或|右的字元

'(...)' 分組匹配, re.search("(abc)a(123|45)", "abcabca456c").group() 結果為'abcabca45'

'\a' 只從字元開頭匹配

'\z' 匹配字元結尾,同$

'\d' 匹配數字0-9

'\d' 匹配非數字

'\w' 匹配[a-za-z0-9],還包括下劃線『_』

'\w' 匹配非[a-za-z0-9]

's' 匹配空白字元、\t、\n、\r

簡單示例:

# 字元組   

# [abc] 乙個字元組只表示乙個字元位置上

# [0-9] 根據ascll碼

# [a-z]

# [a-z]

# [a-za-z] 大小寫 只有-前後才有大小比較

# [0-9] -->\d 表示匹配一位任意數字 digit

# [0-9a-z_] -->\w 表示數字字母下劃線 word

# 空格\tab\enter --> |\t|\n

# -->\s 表示所有空白,包括空格、tab、回車

# 正規表示式中表示匹配的內容的符號都是正則中的元字元

# \w 非數字字母下劃線

# \d 非數字

# \s 非空白

# [\d] \d 相同

# [\d\d][\w\w][\s\s] 匹配所有

# . 表示匹配除了換行符之外的任意乙個字元

# [^1] 表示非字元組,除了1以外的

# [^\d] 表示匹配所有的非數字

# ^ 表示匹配乙個字串的開始

# $ 表示匹配乙個字串的結尾

#^a.$ 在adacad這個字串中什麼也匹配不上

# ad|bc 匹配ad或bc,優先匹配左邊的,不匹配右邊,所以長字元在左

# 在www.中可以加\轉義.

# www\.(oldboy|baidu|taobao)\.com 匹配該三個**

#\b 匹配單詞的邊界

# 記憶元字元

# \d \w \s \t \n

# [^]

# ^ $

# | ()

# 乙個元字元只能匹配一位

表示匹配n次

表示至少匹配n次

表示至少n次,至多m次

? 表示匹配0或1次

+ 表示一次或多次

* 表示0次或多次

貪婪匹配,在量詞範圍允許的情況下盡量多的匹配內容

\d\d6 187246693634973618728 結果:一直匹配到最後乙個6,貪婪匹配回溯演算法

非貪婪(惰性匹配)

########## .*?x 表示匹配字元 任意多次數,但是遇到x就停止 爬蟲

########## .*x 表示匹配字元 任意多次數,但是遇最後乙個x就停止 爬蟲

\d?6 非貪婪,在條件允許的條件下盡量少的匹配,此例中至少匹配3次後在匹配的第乙個6後停止

re,math 從頭開始匹配

re.search 匹配包含

re.findall 把所有的匹配到的字元放到列表中,以列表中的元素返回

re.split 以匹配到的字元當作列表分隔符

re.sub 匹配字元並替換

re.fullmatch 全部匹配

re模組和正則

正規表示式 就是用來篩選字串中特定內容的一串具有某種邏輯規則的字元組成。正規表示式不是python獨有的,而是一門獨立的技術,它在所有的程式語言中都有使用,在python中使用就必須依賴於re模組。正則的應用場景 比如,爬蟲,資料分析。正則的使用某些特定邏輯的字元構造的 可以簡化我們的 的冗餘。看以...

正則re模組

匹配任意乙個字元 以某個字元開頭 以某個字元結尾 匹配0次或多次 匹配一次或多次 匹配0次或1次 匹配n次 匹配n次或多次 匹配n次到m次 字符集,非 a z 匹配小寫字母a到z的任意字母一次 a z 匹配除了小寫字母a到z之外的任意字元一次 d 匹配數字0 9,0次或多次 d匹配任何十進位制數,0...

re正則模組

1.正規表示式的常用符號 預設匹配除 n之外的任意乙個字元,若指定flag dotall,則匹配任意字元,包括換行 匹配字元開頭,若指定flags multiline,這種也可以匹配上 r a nabc neee flags re.multiline 匹配字元結尾,或e.search foo bfo...