python正則表達式

之前用php作數據採集,作了有小半年,因此對php的正則用法仍是很熟悉,轉用python後,流程仍是差很少,只是python的相關函數用法和php不同。php

 

php正則匹配函數卻是很簡單,preg_match,preg_match_all,preg_replace, 直接就能夠拿來用了,是否使用貪婪模式,是否區分大小寫直接在正則表達式裏指明。python

再來看看python正則表達式

import re

# 匹配開頭結尾
str="efg fwef  safeasafsdf   kkk"
reg=r"fg(.+)kkk"

# 要把正則表達式編譯一下, 其實不編譯也行, 直接 re.match(正則表達式,要匹配的對象)就能實現,
# 可是爲何要編譯(cmopile)呢?由於若是不少地方用到這個匹配的話,能夠提升效率
pat
=re.compile(reg)
# match 這裏有個特色那就是他是從開頭開始匹配,至關於默認在匹配式開頭加了 ^ ,這裏匹配式至關於 ^fg(.+)kkk
m
=pat.match(str) #沒有結果 if m: print m.group() # search和match相似,可是他並不會從開頭開始 m=pat.search(str)
#有結果
if m: print m.group()
# match和search 能夠用在驗證字符數據的地方(例如驗證郵箱,電話等) 或 無需獲得括號裏匹配內容的結果裏。

# findall能夠以元組的形式匹配返回匹配內容
# 若是返回的結果有中文,要進一步遍歷以後才能正確顯示中文
str
="efg fwef safeasafsdf kkk efg hello 你好啊 kkkefg 我很好 kkk efg 卡卡 " reg=r"Fg(.+?)kkk" pat=re.compile(reg,re.I|re.S) m=pat.findall(str) print m # 匹配是個有效郵箱 email='1232_abcw+aw@qq.com'
# \w 表示數字字母和下滑線,也叫字符型,後面的re.I 表示忽略大小寫,re.S 表示.表明任意字符(這裏不用加,只是作示範) pat=re.compile(r'^[\w|\+]+@[\w|\.]+$',re.I|re.S) m=pat.search(email) if m: print 'this is a email' print m.group()
相關文章
相關標籤/搜索