正則
模式描述
\w匹配字母數字及下劃線 ,等價於[a-za-z0-9_]
\w匹配非字母數字及下劃線,等價於[^a-za-z0-9_]
\s匹配任意空白字元,等價於[\t\r\n\f]
\s匹配任意非空白字元,等價於[^\t\r\n\f]
\d匹配任意數字,[0-9]
\d匹配任意非數字 [^0-9]
\a匹配字串開始
\z匹配字串結束,如果存在換行,只匹配到換行前的結束字串
\z匹配字串結束
\g匹配最後匹配完成的位置
\n匹配乙個換行符
\t匹配乙個製表符
^匹配以字串的開頭,^a 以a開頭的字元:abc,ass,a23
$匹配字串的末尾,a$以a結尾的:aaa,sca
.匹配任意字元,除了換行符,當re.dotall標記被指定時,可以匹配包括換行符的任意字元, 要匹配包括 '\n' 在內的任何字元,請使用象 '[.\n]' 的模式。
[...]
用來表示一組字元,單獨列出:[amk]匹配'a','m'或'k'
[^...]
匹配除去中的字元,[^abc]
:匹配除去abc以外的字元
*匹配0個或多個表示式
+匹配1個或多個表示式
?匹配0個或1個由前面地正規表示式定義的片段,非貪婪方式
精確匹配n個前面的表示式
匹配n到m次由前面的正規表示式定義的片段,貪婪方式
a|b匹配a或b
()匹配括號內的表示式,也表示乙個組
re模組
re.search(pattern,string,flags=0) 掃瞄整個字串並返回第乙個成功的匹配物件。函式和match用法一樣
re.compile(pattern[, flags]) 編譯乙個正規表示式,生成乙個正規表示式(pattern)物件,供match和search使用
re.findall(pattern[, flags]) 在字串中查詢所有表示式可匹配到的物件(不重複),返回乙個列表
re.finditer(pattern[, flags]) 功能和findall相同,返回值不一樣,它返回的是乙個迭代器
re.split(pattern,string, max=0) 根據正規表示式 pattern 中的分隔符把字元 string 分割為乙個列表,返回成功匹配的列表,最多分割 max 次(預設是分割所有匹配的地方)
re.sub(pattern, repl, string, max=0) 把字串 string 中所有匹配正規表示式 pattern 的地方替換成字串 repl,如果 max 的值沒有給出, 則對所有匹配的地方進行替換
importreregex = re.compile(r'
bb(\d+)')
res = re.match(regex,'
abb4555@4?bb15
')#開頭搜尋
(res.group())
res = re.search(regex,'
abb4555@4?bb15
')#全域性搜尋
(res.group())
res = re.findall(regex,'
abb4555@4?bb15
')#所有物件
(res)
res = re.sub(regex,'
666','
abb4555@4?bb15
')#替換
(res)
res = re.finditer(regex,'
abb4555@4?bb15
')#返回迭代器
(res)
attributeerror:
'nonetype
' object has no attribute '
group
'bb4555['
4555
', '15'
]a666@4?666
貪婪模式和非貪婪模式
正規表示式修飾符 - 可選標誌
我們來說說什麼是標誌位:
正規表示式可以包含一些可選標誌修飾符來控制匹配的模式。修飾符被指定為乙個可選的標誌。多個標誌可以通過按位 or(|) 它們來指定。如 re.i | re.m 被設定成 i 和 m 標誌:
修飾符描述
re.i
使匹配對大小寫不敏感
re.l
做本地化識別(locale-aware)匹配
re.m
多行匹配,影響 ^ 和 $
re.s
使 . 匹配包括換行在內的所有字元
re.u
根據unicode字符集解析字元。這個標誌影響 \w, \w, \b, \b.
re.x
該標誌通過給予你更靈活的格式以便你將正規表示式寫得更易於理解。
importreregex = '
abcd
'res = re.match(r'
abcd
','abcd
',re.i)
(res.group())
abcd
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...