是文字處理的強大**,在網頁爬蟲中有大量的應用。
#matching string
import re
pattern1=
'cat'
pattern2=
'bird'
string=
"dog runs to cat"
print
(pattern1 in string)
print
(pattern2 in string)
用正規表示式匹配
#regular expression
import re
pattern1=
"cat"
pattern2=
"bird"
string=
"dog runs to cat"
print
(re.search(pattern1,string)
)print
(re.search(pattern2,string)
)#search在string中找pattern
返回
none
#multiple patterns(run or ran)
import re
pptn=r"r[au]n"
#前面有個r代表是正規表示式形式,代表多種情況
print
(re.search(ptn,
"dog runs to cat"
))
import re
print
(re.search(r"r[a-z]n"
,"dog runs to cat"))
print
(re.search(r"r[a-z]n"
,"dog runs to cat"))
print
(re.search(r"r[0-9]n"
,"dog r2ns to cat"))
print
(re.search(r"r[0-9a-z]n"
,"dog runs to cat"
))
none
#數字
##############
#\d:代表數字
print
(re.search(r"r\dn"
,"run r4n"))
#\d:不是數字形式
print
(re.search(r"r\dn"
,"run r4n"
))
#空白
##############
#\s:代表空白[\t\n\r\f\v]都代編空白符
print
(re.search(r"r\sn"
,"r\nn r4n"))
#\s:不是空格形式
print
(re.search(r"r\sn"
,"r\nn r4n"
))
#所有字母數字和」_「
##############
#\w:代表[a-za-z0-9_]
print
(re.search(r"r\wn"
,"r\nn r4n"))
#\w:不是w的形式
print
(re.search(r"r\wn"
,"r\nn r4n"
))
#空白字元
##############
#\b:empty string (在單詞的開始或結尾)
print
(re.search(r"\bruns\b"
,"dog runs to cat"))
#\b:不是b的形式,即前後不是空格
print
(re.search(r"\bruns\b"
,"dog runs to cat"))
#不用管是否貼近文字
print
(re.search(r"\bruns \b"
,"dog runs to cat"))
#只有貼著文字的空白符才可以
none
none
#匹配\:\\
#.:可以匹配任何除了\n的東西
#句尾句首
############
#^:匹配句首
print
(re.search(r"^dog"
,"dog runs to cat"))
#$:匹配句尾
print
(re.search(r"cat$"
,"dog runs to cat"
))
#是否
###############
#?:may or may not occur
print
(re.search(r"mon(day)?"
,"monday"))
print
(re.search(r"mon(day)?"
,"mon"
))
#多行匹配
string=
"""dog runs to cat.
i run to dog.
"""print
(re.search(r"^i"
,string)
)print
(re.search(r"^i"
,string,flags=re.m)
)#多行匹配,可以去找下一行的首
none
#+:1或多次
#*0或多次
#可選次數出現n,m次
print
(re.search(r"ab"
,"a"))
print
(re.search(r"ab"
,"abbbbb"
))
none
#group,分批次匹配
match=re.search(r"(\d+),date:(.+)"
,"id:021523,date:feb/12/2017"
)print
(match.group())
print
(match.group(1)
)print
(match.group(2)
)
021523,date:feb/12/2017
021523
feb/12/2017
#group
match=re.search(r"(?p\d+),date:(?p.+)"
,"id:021523,date:feb/12/2017"
)#把組加入名字方便區分?p
print
(match.group(
'id'))
print
(match.group(
'date'))
021523
feb/12/
2017
#尋找所有匹配
#findall
print
(re.findall(r"r[ua]n"
,"run ran ren"))
#|:代表or
print
(re.findall(r"(run|ran)"
,"run ran ren"))
print
(re.findall(r"r(u|r)n"
,"run ran ren"
))
[『run』, 『ran』]
[『run』, 『ran』]
[『u』, 『a』]
#替換
#re.sub() replace
print
(re.sub(r"r[au]ns"
,"catches"
,"dog runs to cat"
))
dog catches to cat
#fenlie
print
(re.split(r"[,;\.]"
,"a;b,c.d;e"))
#按左邊形式拆分
[『a』, 『b』, 『c』, 『d』, 『e』]
compiled_re=re.
compile
(r"r[ua]n"
)#先編譯要匹配的東西,在去匹配
print
(compiled_re.search(
"dog runs to cat"
))
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...