1、re.match函數(shù)
原型:match(pattern, string, flags=0)
參數(shù):patter: 匹配的正則表達(dá)式
????????????string: 要匹配的字符串
????????????flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,值如下:
????????????????????re.I? ? 忽略大小寫
????????????????????re.L? ? 做本地戶識別
????????????????????re.M? ? 多行匹配,影響^和$
????????????????????re.S? ? 是.匹配包括換行符在內(nèi)的所有字符
????????????????????re.U? ? 根據(jù)Unicode字符集解析字符,影響\w? \W? \b? \B
????????????????????re.X? ? 使我們以更靈活的格式理解正則表達(dá)式
功能:嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,返回None。掃描整個字符串,返回從起始位置成功的匹配
2、re.search函數(shù)
原型:search(pattern, string, flags=0)
參數(shù):patter: 匹配的正則表達(dá)式
????????????string: 要匹配的字符串
????????????flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式
功能:掃描整個字符串,并返回第一個成功的匹配
3、re.findall函數(shù)
原型:findall(pattern, string, flags=0)
參數(shù):patter: 匹配的正則表達(dá)式
????????????string: 要匹配的字符串
????????????flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式
功能:掃描整個字符串,并返回結(jié)果列表
4、re.split()字符串切割
str1 ="This? ? ? ? is? ? a? ?test"
print(re.split(r" +", str1))
5、re.finditer函數(shù)
原型:finditer(pattern, string, flags=0)
參數(shù):patter: 匹配的正則表達(dá)式
????????????string: 要匹配的字符串
????????????flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式
功能:與findall類似,掃描整個字符串,返回的是一個迭代器
6、字符串的替換和修改
re.sub(pattern, repl, string, count=0)
re.subn(pattern, repl, string, count=0)
????????pattern:? 正則表達(dá)式(規(guī)則)
????????repl:? ? 指定的用來替換的字符串
????????string:? 目標(biāo)字符串
????????count:? ? 最多替換次數(shù)
功能:在目標(biāo)字符串中以正則表達(dá)式的規(guī)則匹配字符串,再把他們替換成指定的字符串。可以指定替換的次數(shù),如果不指定,替換所有的匹配字符串
區(qū)別:前者返回一個被替換的字符串,后者返回一個元組,第一個元素被替換的字符串,第二個元素表示被替換的次數(shù)
7、分組
除了簡單的判斷是否匹配之外,正則表達(dá)式還有提取子串的功能。用()表示的就是提取分組
str1 ="010-53247654"
m = re.match(r"(?P\d{3})-(?P\d{8})", str1)
#使用序號獲取對應(yīng)組的信息,group(0)一直代表的原始字符串
print(m.group(0))
print(m.group(1))
print(m.group("first"))
print(m.group(2))
#查看匹配的各組的情況
print(m.groups())
8、編譯:
當(dāng)我們使用正則表達(dá)式時,re模塊會干兩件事
(1)、編譯正則表達(dá)式,如果正則表達(dá)式本身不合法,會報錯
(2)、用編譯后的正則表達(dá)式去匹配對象
compile(pattern, flags=0)
pattern:要編譯的正則表達(dá)式
示例:
pat =r"^1(([3578]\d)|(47))\d{8}$"
print(re.match(pat, "13687872525"))
#編譯成正則對象
re_telephon = re.compile(pat)
print(re_telephon.match("13687872525"))