python 正則表示式(三)字串處理
阿新 • • 發佈:2019-01-03
import re ''' 1)切割字串時,不確定空格的個數,如:"sun today mood eath" ''' str1 = "sun today mood eath" print(re.split(r" +",str1)) ''' 2)字串的替換和修改 def sub(pattern, repl, string, count=0, flags=0) def subn(pattern, repl, string, count=0, flags=0) pattern:正則表示式規則,符合的則被替換 repl:用來替換後生成的新字串 string:目標字串 count:最多替換次數 功能:在目標字串中以正則表示式的規則匹配字串,再把他們替換成指定的字串。 可以指定替換的次數,如果不指定,替換所有的匹配字串 區別:sub返回一個替換後的字串;subn返回一個元組,第一個元素是替換後的字串,第二個元素的替換的次數 ''' str2 = "sun sum sss dse fds sub" print(re.sub(r"su.","beReplace",str2)) print(re.subn(r"su.","beReplace",str2)) ''' 3)分組: 概念:除了簡單的判斷是否匹配之外,正則表示式還有提取字串的功能。 用()表示的就是提取分組 為分組命名:(?P<name>) 查詢分組-->group("name") -->可有可無 ''' #分組-->提取QQ郵箱 str3 = "admin:
[email protected]" str4 = "賬號:[email protected]" m1 = re.search(r"\w{1,10}@(\w{2,10})\.com",str3) m2 = re.search(r"\w{1,10}@(\w{2,10})\.com",str4) ''' 這裡需要匹配.com,而.本身是正則表示式的一個元字元,可以匹配除換行符以外的任意字元 使用 \. 將 . 轉義字元成普通字元使用 ''' #group(0)是匹配得到的字串,我這裡是要提取郵箱 print(m1.group(0)) print(m2.group(0)) #group(1)是我們使用()設定的分組,我這裡把郵箱特徵分組,便於後期處理 print(m1.group(1)) print(m2.group(1)) ''' 4)編譯:將正則表示式編譯成一個物件。 1 編譯正則表示式,如果正則表示式本身不合法,會報錯(檢驗功能) 2 編譯後的正則表示式作為一個物件,可以被重複使用 編譯正則表示式的函式: def compile(pattern, flags=0) pattern:要編譯的正則表示式 ''' re_mailProcess = re.compile(r"\w{1,10}@(\w{2,10})\.com") m3 = re_mailProcess.search(str3) print(m3.group(0))