正則表達式:
正則表達式也叫匹配模式没卸,它由一組具有特定含義的字符串組成诉位,通常用于匹配和替換文本诈闺。
正則表達式陪拘,是一個的技術(shù)厂镇,很多 編程語言支持正則表達式處理
正則的使用:(大小寫意思正好相反)
re 中的常見方法:match()? ? ?findall()? ? finditer()? sub()? ?compile()? serch()
match匹配第一個字符
findall匹配所有的字符
元字符:
.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#? 匹配非換行的任意字符
\d? ?(degist)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #匹配數(shù)字<==>[0123456789]<==>[0-9]表示匹配中括號里面出現(xiàn)的數(shù)字也就是所有數(shù)字(數(shù)字只有0-9十個數(shù)字)
\D????????????????????????????????????????????????#匹配非數(shù)字????
\w? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#匹配有效字符:大小寫字母+? 數(shù)字+ 下劃線(_)+各國語言字符(不建議使用)
\W????????????????????????????????????????????????#匹配特殊符號:-*/+=@#¥%&等符號
\s? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#匹配空格位(\t代表table鍵)
\S? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#匹配所有非空格位
^????????????????????????????????????????????????????#以? 開頭
$? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#以? 結(jié)尾
^\d.*a$????????????????????????????????????????#表示以數(shù)字開頭 以a結(jié)尾的中間字符串
\b? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #匹配單詞
[]????????????????????????????????????????????????????#表示查詢[]中的字位 若是中文字體,則需要一個一個的寫進去(不帶左刽,? 若帶則說明是要查詢捺信,)? 0-9? a-z? A-Z區(qū)間可以任意選擇比如[1-5]????????????[h-n]....若是多個區(qū)間則是直接寫中間不加任何符號????????????[0-9a-zA-Z]也可以數(shù)字--字母????????????[0-z]用的是ascii碼值排列
[^dfg]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #表示匹配除了dfg這幾個字母之外的所有字符
注意:在python中兩個"\"在輸出中表示'\',因為'\'具有轉(zhuǎn)義的作用
在正則里面‘\’也具有轉(zhuǎn)移的轉(zhuǎn)義的作用? ?在正則里面當字符里面有多個‘\’的時候要用r將‘\’的轉(zhuǎn)義的作用去除(有事沒事就+r)
位數(shù):(須是英文符號)
*? ? ? ? ? ? ? ? ? ? ? ? ? ?表示多個或者0個? ? ? ? ? ? ??
?+????????????????????????必須是1或者多個不能是0個(返回值有或者沒有? 返回沒有的時候返回空字符”'')? ???????????????????????
??欠痴?? ? ? ? ? ? ? ? ? ? ? ?表示0或者1
{m}? ? ? ? ? ? ? ? ? ? ?表示m位
{m,}? ? ? ? ? ? ? ? ? ? 表示至少有m位
{m,n}? ? ? ? ? ? ? ? ? 表示在m和n位之間(書寫時不要有空格)迄靠,閉區(qū)間
==============================================代碼如下=============================================
re模塊的高級應(yīng)用:
1、 serch:
執(zhí)行正則表達式搜索并且在搜索結(jié)束后返回所匹配到的串喇辽,只返回第一次匹配的結(jié)果 返回值是一個迭代器掌挚。而findall則是返回所有匹配到的所有串。
2菩咨、find:
匹配所有的對象吠式,返回一個列表
3、sub:
實現(xiàn)查找替換
4抽米、split:
分割字符串特占,結(jié)果返回列表
5、finditer:
返回一個迭代器iterator云茸,這個iterator返回順序是目、內(nèi)容和re.findall()相同
6、compile:
用來編譯正則表達式模式字符串标捺,并生成正則表達式對象胖笛。即改變正則表達式表達方法。
re.I(IGNORECASE)忽略大小寫宜岛,括號內(nèi)是完整的寫法
re.M(MULTILINE)多行模式长踊,改變^和$的行為
re.S(DOTALL)點可以匹配任意字符,包括換行符
re.L(LOCALE)做本地化識別的匹配萍倡,不推薦使用
re.U(UNICODE)使用\w \W \s \S \d \D使用取決于unicode定義的字符屬性身弊。在python3中默認使用該flag
re.X(VERBOSE)冗長模式,該模式下pattern字符串可以是多行的,忽略空白字符阱佛,并可以添加注釋
=========================================================================
貪婪與懶惰:
在Python中正則默認是貪婪模式(個別語言中也可能是非貪婪模式)帖汞,貪婪模式就是總會嘗試匹配更多的字符。非貪婪模式即懶惰模式則相反 懶惰模式總嘗試匹配最少的字符凑术。
在*翩蘸、?淮逊、+催首、{m,n}后面加上?泄鹏,可以將貪婪模式變成非貪婪模式