正規表示式:
匯入模組 import re
re.match(正規表示式,要匹配的字串)
match方法從左到右匹配,有個不一樣就結束方法
若字串匹配正規表示式,則match方法返回匹配物件(match object),
否則返回none(注意不是空字串"")
匹配物件macth object具有group方法,用來返回字串的匹配部分
表示字元
.匹配任意1個字元(除了\n)
[ ]匹配[ ]中列舉的字元
[23456]匹配2,3,4,5,6
[^23456]不是23456
[a-z5-9]匹配a到z,5到9
\d匹配數字,即0-9 ===[0-9]
\d匹配非數字,即不是數字 ====[^0-9]
\s匹配空白,即 空格,tab鍵
\s匹配非空白
\w匹配單詞字元,即a-z、a-z、0-9、_ ===[a-za-z0-9]
\w匹配非單詞字元
表示數量
*匹配前乙個字元出現0次或者無限次,即可有可無
/d*表示出現0次或多次數字
+匹配前乙個字元出現1次或者無限次,即至少有1次
?匹配前乙個字元出現1次或者0次,即要麼有1次,要麼沒有
匹配前乙個字元出現m次
匹配前乙個字元至少出現m次
匹配前乙個字元出現從m到n次
原始字串
python中字串前面加上 r 表示原生字串
正則中加個r表示原生字串
例 re.match(r"\\\","\\\")匹配三個\
表示邊界
^匹配字串開頭 ^a:以a開頭
$匹配字串結尾 a$:以a結尾 例:手機號正則:r"1[3578]\d$
\b匹配乙個單詞的邊界
單詞邊界就是單詞和符號之間的邊界
這裡的單詞可以是中文字元,英文本元,數字;
符號可以是中文符號,英文符號,空格,製表符,換行
\b匹配非單詞邊界
匹配分組
|匹配左右任意乙個表示式 例 匹配0-100 :r"[1-9]?\d?$|100$"
(ab)
將括號中字元作為乙個分組 常與group(1)或者groups()[0]使用
\num
引用分組num匹配到的字串 常與(ab)使用 \2就是第二個()裡面的內容
(?p)
分組起別名
(?p=name)
引用別名為name分組匹配到的字串
search:查詢字串中匹配的正規表示式的內容,從左到右,查詢到後就停止
findall:查詢字串中所有符合正規表示式的內容
sub 將匹配到的資料進行替換 替換的可以是函式
re.sub(r"\d+", '998', "python = 997")
def replace(result):
s=int(result.group())+50
return str(s)
re.sub(r"\d+",replace, "python = 997")
split 根據匹配進行切割字串,並返回乙個列表
ret = re.split(r":| ","info:xiaozhang 33 shandong")
print ret
ret=['info','xiaozhang','33','shandong']
python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配盡可能多的字元;
非貪婪則相反,總是嘗試匹配盡可能少的字元。
在"*","?","+",""後面加上?,使貪婪變成非貪婪。
練習:替換成
解:s=""
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...