不知是因爲自己太低端還是其他的什麼原因,別人都說的正則表達式非常強大,可是我的意識中正則表達式有用,但總是覺得沒有傳說中的那麼厲害。也有可能是自己沒有真正的理解它吧。在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 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),自動將字符串中的所有特殊鄭則仕字符轉義