以前用php做資料採集,做了有小半年,所以對php的正則用法還是很熟悉,轉用python後,流程還是差不多,只是python的相關函式用法和php不一樣。
php正則匹配函式倒是很簡單,preg_match,preg_match_all,preg_replace, 直接就可以拿來用了,是否使用貪婪模式,是否區分大小寫直接在正規表示式裡指明。
再來看看python
importre#匹配開頭結尾
str="
efg fwef safeasafsdf kkk
"reg=r"
fg(.+)kkk
"# 要把正規表示式編譯一下, 其實不編譯也行, 直接 re.match(正規表示式,要匹配的物件)就能實現,
# 但是為什麼要編譯(cmopile)呢?因為如果很多地方用到這個匹配的話,可以提高效率
pat=re.compile(reg)
# match 這裡有個特點那就是他是從開頭開始匹配,相當於預設在匹配式開頭加了 ^ ,這裡匹配式相當於 ^fg(.+)kkk
m=pat.match(str) #沒有結果
ifm:
m.group()
# search和match類似,但是他並不會從開頭開始
m=pat.search(str)
#有結果
ifm:
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)
printm#
匹配是個有效郵箱
email='
'# \w 表示數字字母和下滑線,也叫字元型,後面的re.i 表示忽略大小寫,re.s 表示.代表任意字元(這裡不用加,只是做示範)
pat=re.compile(r'
^[\w|\+]+@[\w|\.]+$
',re.i|re.s)
m=pat.search(email)
ifm:
'this is a email
m.group()
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...