不知是因為自己太低端還是其他的什麼原因,別人都說的正規表示式非常強大,可是我的意識中正規表示式有用,但總是覺得沒有傳說中的那麼厲害。也有可能是自己沒有真正的理解它吧。在python中再次偶遇,那就再來好好學習一番。
首先是萬用字元,點號(.)可以匹配除了換行符之外的任意乙個字元,'.ython』可以匹配』python『也可以匹配』jypthon『。注意點號是匹配乙個字元,不能使空更不能是多個。假如在需要匹配的字串中包含了點號,這時候就需要轉義符來實現,在re中使用(python\\.org)來匹配(python.org).
匹配字符集,使用[ ]表示,[pj]ython就表示匹配python或者jython,而非其他內容。使用[a-z]表示匹配任意乙個小寫字母;[a-za-z0-9]則表示匹配任意字母或數字。
反轉字符集,可以在開頭使用^字元[^abc]表示匹配除了a b c之外的任意字元。當然,如果匹配的內容中包括了^ [ ]等符號時也需要使用反轉字元。
選擇符和子模式,在字串的每個字元都不一樣的時候字符集是很好用的,但是如果想匹配字元創python和per呢,這個時候可以使用選擇符「|」,python|per就表示匹配python或者per。有時候不需要對整個字元使用選擇符,p(ython|er)表示的意義和上面一樣,而小括號中的部分就被稱為子模式。
可選項和重複子模式,(python)?為可選項,即該子模式存在或者不存在。(python)*表示模式重複0次或者多次,(python)+表示子模式重複一次或者多次,(python)表示重複m~n次。
匹配開頭和結尾,匹配開頭的時候使用^,如^http表示匹配以http開頭的字串,匹配結尾使用$符號,com$表示匹配以com為結尾的字串。
some_text="gao xiang... huier"
import re
if re.search("xiang",some_text): #find the world in the text
print "found it"
if re.match("xiang",some_text): #macth the world from the s
print "found it,too"
str1=re.split("[. ]+",some_text)
print str1
str2=re.split("[. ]+",some_text,maxsplit=2) #split the text into 3 parts
print str2
str3=re.findall("[a-za-z]+",some_text) #find all the substring of the text
print str3
pattern="www.python.org"
str4 = re.escape(pattern)
print str4
關於正規表示式在python中的使用,
search(pattern,string)根據包含正規表示式在字串中尋找,返回true 或 false
match(pattern,string)在字串的開頭出進行匹配
split(pattern,string,flags)根據模式對字串進行分割,可以通過控制引數控制分割的子結構的數目
findall(pattern,string)列出所有匹配項
escape(string),自動將字串中的所有特殊鄭則仕字元轉義
python 正則re模組
1.正則各種字元表示的含義 預設匹配除 n之外的任意乙個字元,若指定flag dotall,則匹配任意字元,包括換行 匹配字元開頭 匹配 號前的字元0次或多次,re.findall ab cabb3abcbbac 結果為 abb ab a 匹配前乙個字元1次或多次,re.findall ab ab ...
正則re模組
匹配任意乙個字元 以某個字元開頭 以某個字元結尾 匹配0次或多次 匹配一次或多次 匹配0次或1次 匹配n次 匹配n次或多次 匹配n次到m次 字符集,非 a z 匹配小寫字母a到z的任意字母一次 a z 匹配除了小寫字母a到z之外的任意字元一次 d 匹配數字0 9,0次或多次 d匹配任何十進位制數,0...
re正則模組
1.正規表示式的常用符號 預設匹配除 n之外的任意乙個字元,若指定flag dotall,則匹配任意字元,包括換行 匹配字元開頭,若指定flags multiline,這種也可以匹配上 r a nabc neee flags re.multiline 匹配字元結尾,或e.search foo bfo...