1. 程式人生 > >python 正則表示式(三)字串處理

python 正則表示式(三)字串處理

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))