您的位置:首頁>正文

大話Python規則運算式

python的規則運算式模組re

import re match_object=re.compile(r"") result=re.match(match_object,"resource string") result=re.search(match_object,"resource string") result=re.findall(match_object,"resource string") # 注意區別 match_object.match("resource string").group match_object.search("resource string").group match_object.findall("resource string") #上下兩種方式任選一種, findall是返回列表 print result.group

match與search的區別:

match是從源字串的頭部開始, 僅當從第一個字元開始匹配成功, 才能從字串中匹配到目標字串

search是從源字串任意位置開始匹配

match和search的共同點是一旦匹配成功就返回, 因而只會從源字串中成功匹配一個目標字串

findall 是將源字串中的所有匹配的目標字串, 以清單的形式返回

match_object=re.compile(r"") # r 表示原字串, 比如存在"\"字元時, "\"不再表示轉義的意思, 而是 保持本身作為一個普通字串的含義

"\"用在字串中的意思是轉義, 例如"\\n"不再表示分行符號, 而是普通字元"\n"

print "\n" #輸出換行 print "\\n" \n #輸出普通字元, 沒有換行意思 print r"\n" \n #輸出普通字元, 沒有換行意思 print r"\\n" \\n #輸出普通字元

match_object=re.compile(r"")

匹配目標, 規則運算式定義:

"\d{}" "\d"匹配數字,"{}"表示匹配的個數, {5}匹配5個, {1, }至少匹配1個, {3,8}匹配3至8個;

"^" 以什麼開始

"$" 以什麼結束

"[0-9a-z]" 匹配中包含的一個字元

"[^0-9]" 表示匹配非數位的字串, "^"用在裡面不再表示以什麼開始, 而是表示非

"你|我|他" "|"表示"或"的意思

"?" 表示匹配次數要麼為0, 要麼為1

"*" 表示匹配任一次數, 即是0次或0次以上

"+"表示至少匹配一次

"*?" 表示非貪婪匹配 即是盡可能少的匹配

p = re.compile(r'woyouy*?') result = re.match(p, 'woyouyyyyyyy') print result.group woyou

"." 萬用字元, 可以表示除換行以外的所有字元, 如果加上re.DOTALL,使"."什麼都可以匹配, 還有re.IGNORECASE,re.VERBOSE

re.VERBOSE 可以排除注釋和空白字元

p = re.compile(r'good.haha', re.DOTALL) result = re.findall(p, 'good\nhaha') print result ['good\nhaha'] p = re.compile(r'good.haha', re.IGNORECASE | re.DOTALL) result = re.findall(p, 'GOOD\nHahA') print result ['GOOD\nHahA'] p = re.compile(r''' \w+. # asdf \w+''' #12 ,re.IGNORECASE | re.DOTALL | re.VERBOSE) result = re.findall(p, 'GOOD\nHahA') print result ['GOOD\nHahA']

"\w" 表示匹配單詞, 它是包括數字的

"\s" 表示匹配空白/換行/定位字元

分割字串:

p = re.compile(r'\d+') result = re.split(p, 'tom32jerry456haha') print result ['tom', 'jerry', 'haha']

替換字串:

p = re.compile(r'\d+') result = re.sub(p, 'replace', 'tom32jerry456haha') prinr result tomreplacejerryreplacehaha
同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示