【直接上代碼】 #coding=utf-8#1、先將正則表達式的字元串形式編譯為Pattern實例 #2、使用Pattern實例處理文本並獲得匹配結果 #3、最後使用Match實例獲得消息,進行其他操作 import re # 【1】 re.compile(string[,flag]) 將正則表達式 ...
【直接上代碼】
#coding=utf-8
#1、先將正則表達式的字元串形式編譯為Pattern實例
#2、使用Pattern實例處理文本並獲得匹配結果
#3、最後使用Match實例獲得消息,進行其他操作
import re
# 【1】 re.compile(string[,flag]) 將正則表達式編譯成pattern對象
'''
# 【2】re.match(pattern,string[,flags])
# 從輸入參數string的開頭開始嘗試匹配pattern,
# 遇到無法匹配的字元或者已經到達string末尾,立即返回None,反之獲取匹配的結果
#將正則表達式編譯成pattern對象
pattern = re.compile(r'\d+')
#使用re.match匹配文本,獲得匹配結果,無法匹配時將返回None
result1 = re.match(pattern,'192abc')
if result1:
print result1.group()
else:
print '匹配失敗1'
result2 = re.match(pattern,'abc192')
if result2:
print result2.group()
else:
print '匹配失敗2'
#輸出結果--------> 192 匹配失敗2 resul2匹配的時候遇到a的時候無法匹配,立即返回None
'''
'''
# 【3】re.search(pattern,string[,flags])
#match()函數只從string的開始位置匹配
#search()會掃描整個string查找匹配
#將正則表達式編譯成pattern對象
pattern = re.compile(r'\d+')
#使用re.search匹配文本獲得匹配結果,無法匹配時將返回None
result1 = re.search(pattern,'abc192def')
if result1:
print result1.group()
else:
print '匹配失敗1'
#運行結果--------> 192
'''
'''
# 【4】re.split(pattern,string[,maxsplit])
#按照能夠匹配的子串將string分割後返回 列表
#maxsplit用於指定最大分割次數,不指定則將全部分割
pattern = re.compile(r'\d+')
print re.split(pattern,'A1B2C3D4')
#運行結果-----------> ['A', 'B', 'C', 'D', '']
'''
'''
# 【5】re.findall(pattern,string[,flags])
#搜索整個string,以列表形式返回能匹配的全部子串
pattern = re.compile(r'\d+')
print re.findall(pattern,'A1B2C3D4')
#運行結果----------> ['1', '2', '3', '4']
'''
'''
# 【6】re.finditer(pattern,string[,flags])
#搜索整個string,以迭代器形式返回能匹配的全部Match對象
pattern = re.compile(r'\d+')
matchiter = re.finditer(pattern,'A1B2C3D4')
for match in matchiter:
print match.group()
#運行結果------>
# 1
# 2
# 3
# 4
'''
'''
# 【7】re.sub(pattern,repl,string[,count])
#使用repl替換string中每一個匹配的子串後返回替換後的字元串。
#當repl是一個字元串時,可以使用 \id 或 \g<id> 、 \g<name> 引用分組,但不能使用編號0.
#當repl是一個方法時,這個方法應當只接受一個參數(Match對象),並返回一個字元串用於替換(返回的字元串中不能再引用分組)
#count用於指定最多替換的次數,不指定時全部替換
p = re.compile(r'(?P<word1>\w+) (?P<word2>\w+)') #使用名稱引用
s = 'i say ,hello world!'
print p.sub(r'\g<word2> \g<word1>',s)
p = re.compile(r'(\w+) (\w+)') #使用編號
print p.sub(r'\2 \1',s)
def func(m):
return m.group(1).title() + ' ' + m.group(2).title()
print p.sub(func,s)
#輸出結果------>
# say i ,world hello!
# say i ,world hello!
# I Say ,Hello World!
'''
# 【8】re.subn(pattern,string[,count])
#返回 (sub(repl,string[,count]),替換次數)。
s = 'i say ,hello world!'
p = re.compile(r'(\w+) (\w+)')
print p.subn(r'\2 \1',s)
def func(m):
return m.group(1).title() + ' ' + m.group(2).title()
print p.subn(func,s)
#運行結果-------->
# ('say i ,world hello!', 2)
# ('I Say ,Hello World!', 2)