python在1.5版本時使用re模組來處理正規表示式,提供perl風格的正則模式。
用處:編譯正規表示式,使用re.compile
函式compile(pattern [,flags])
引數pattern,模式字串,即正規表示式。
可選引數flags,標誌位,用來修改正規表示式的匹配方式
返回乙個pattern物件
標誌位引數:
re.i(re.ignorecase) 使匹配對大小寫不敏感
re.l(re.local) 做本地化識別匹配
re.m(re.multiline) 多行匹配,影響^和$
re.s(re.dotall) 使匹配包括換行在內的所有字元
re.u(re.unicode) 根據unicode字符集解析字元,影響\w,\w,\b,\b
re.x(re.verbose) 通過給予你更靈活的格式以便你將正規表示式寫得更易於理解
如:
string=r'wan\w'html='citizen wang,always fall in love with neighbour, wang'
pa=re.compile(string,re.i)
li=pa.findall(html)
print(li)
最後返回乙個列表:['wang', 'wang']
注:\w,表示匹配任意單詞字元,和[a-za-z0-9_]等價(包括下劃線)
re.match()函式
總是從字串開頭匹配,並返回match物件。通過match物件的group()或group(0)獲得匹配的結果。
re.match(pattern,string[,flags=0])
如:>>>ma=re.match('\w','_hello')
>>>ma.group()
最後返回:'-'
若:>>>ma=re.match('\w','?hello')
>>>ma.group()
最後返回:attributeerror: 'nonetype' object has no attribute 'group'
re.search()函式
對整個字串進行搜尋匹配,返回第乙個匹配的match物件。
re.search(pattern,string[,flags=0])
>>>ma=re.match('e\wl','_hello')
>>>ma.group()
最後返回:ell
re.split()
分割字串
split(pattern, string, maxsplit=0, flags=0)
單一分割符時與str.split(self, /, sep=none, maxsplit=-1)方法一樣
re.sub()
sub是substitute,即字串替換
sub(pattern, repl, string, count=0, flags=0)
如:string='a 111 b 111' 將111替換成222
也可以用str.replace(self, old, new, count=-1, /)
常用元字元:
. 匹配乙個任意字元(除換行以外) ,要匹配包括換行[.\n]
\d 匹配乙個數字字元,等價[0-9]
\s 匹配乙個任意空白字元 ,等價於[\f\n\r\t\v]
\w 匹配乙個任意單詞字元和下劃線,等價於[a-za-z0-9_]
\b 匹配乙個單詞邊界,不匹配任何實際字元,看不到。
^ 匹配字串的開始
$ 匹配字串的結束
| a|b 表示匹配正規表示式 a 或者 b
重複:* 重複0次或多次
+ 重複1次或多次
? 重複0次或1次
重複n次
重複n次或多次
重複n次到m次
反義:\d \s \w \b [^x]
字符集:
匹配乙個字元,這字元是字符集中的任意乙個字元。
例如:[abc], [\d+]
[字元1-字元2] --> 匹配乙個字元,這個字元是unicode編碼值在字元1到字元2中的任意乙個字元;要求字元1的編碼值要小於字元2
例如:[1-9] --> 數字1到9 [a-z] --> 小寫字母 [a-z] --> 大寫字母
[\u4e00-\u9fa5] --> 匹配所有的漢字
注意:-在中括號中,如果放在兩個字元之間表示範圍。
分組:()
懶惰匹配:在重複限定符後面加?號。
當正規表示式中包含能接受重複的限定符時,通常的行為是(在使整個表示式能得到匹配的前提下)匹配盡可能多的字元。
例:a.*b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。
有時,我們更需要懶惰匹配,也就是匹配盡可能少的字元。前面給出的限定符都可以被轉化為懶惰匹配模式,只要在它後面加上乙個問號?。這樣.*?就意味著匹配任意數
量的重複,但是在能使整個匹配成功的前提下使用最少的重複。
例:a.*?b匹配最短的,以a開始,以b結束的字串。如果把它應用於aabab的話,它會匹配aab(第一到第三個字元)和ab(第四到第五個字元)。
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
Python 正規表示式
1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...
Python正規表示式
學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...