不知是因为自己太低端还是其他的什么原因,别人都说的正则表达式非常强大,可是我的意识中正则表达式有用,但总是觉得没有传说中的那么厉害。也有可能是自己没有真正的理解它吧。在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),自动将字符串中的所有特殊郑则仕字符转义