標籤:python Regex
不知是因為自己太低端還是其他的什麼原因,別人都說的Regex非常強大,可是我的意識中Regex有用,但總是覺得沒有傳說中的那麼厲害。也有可能是自己沒有真正的理解它吧。在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}表示重複m~n次。
匹配開頭和結尾,匹配開頭的時候使用^,如^http表示匹配以http開頭的字串,匹配結尾使用$符號,com$表示匹配以com為結尾的字串。
some_text="gao xiang... huier"import reif re.search("xiang",some_text): #find the world in the textprint "found it"if re.match("xiang",some_text): #macth the world from the sprint "found it,too"str1=re.split("[. ]+",some_text)print str1str2=re.split("[. ]+",some_text,maxsplit=2) #split the text into 3 partsprint str2str3=re.findall("[a-zA-Z]+",some_text) #find all the substring of the textprint str3pattern="www.python.org"str4 = re.escape(pattern) print str4
關於Regex在python中的使用,
search(pattern,string)根據包含Regex在字串中尋找,返回true 或 false
match(pattern,string)在字串的開頭出進行匹配
split(pattern,string,flags)根據模式對字串進行分割,可以通過控制參數控制分割的子結構的數目
findall(pattern,string)列出所有匹配項
escape(string),自動將字串中的所有特殊鄭則仕字元轉義
python的re模組及Regex的使用