Python中re模塊常用方法總結分析
re.findall()
在字符串中找到正則表達式所匹配的所有子串,并返回一個列表,如果沒有找到匹配的,則返回空列表。
語法格式:
re.findall(pattern, string, flags=0)
參數:
pattern
:匹配字符串的正則。
string
:待匹配的字符串。
示例:
需求:查找字符串中的所有數字
result = re.findall(r'\d+','1python2hello3') print(result)
結果
['1', '2', '3']
result = re.findall(r'p%','helloP%ython') print(result)
結果
[] #因為要匹配的字符串P% 和正則p%不匹配,所以返回空
result = re.findall(r'p%','helloP%ython',re.I) print(result)
結果
[P%]
re.sub()
語法:
re.sub(pattern, repl, string, count=0, flags=0)
參數:
pattern
: 正則中的模式字符串。
repl
: 替換的字符串,也可為一個函數。
string
: 要被查找替換的原始字符串。
count
: 模式匹配后替換的最大次數,默認 0 表示替換所有的匹配。
result = re.sub(r'python','world','hellopython') print(result)
結果
helloworld
repl 參數是一個函數
#需求:將匹配到結果中小于4的替換成8,大于4的替換成9 import re def modify(value): matched = value.group() if int(matched) <= 4: return '8' else: return '9' str = 'ab12cd34ef567' result = re.sub('\d', modify, str) print(result )
結果
ab88cd88ef999
使用場景:可以對匹配成功要替換的部分做操作
re.compile
當我們在Python中使用正則表達式時,re模塊內部:
- 1)編譯正則表達式,如果正則表達式的字符串本身不合法,會報錯;
- 2)用編譯后的正則表達式去匹配字符串。
那么如果一個正則表達式要重復使用幾千次,出于效率的考慮,我們是不是應該先把這個正則先預編譯好,接下來重復使用時就不再需要編譯這個步驟了,直接匹配,提高我們的效率
compile 函數用于編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。
語法格式為:
re.compile(pattern[, flags])
參數:
pattern
: 一個字符串形式的正則表達式
flags
: 可選,表示匹配模式,比如忽略大小寫,多行模式等,
str = 'ab12cd34ef567' info = re.compile(r'([a-z]{2})(\d{2})') result = info.match(str).group() result1 = info.match(str).groups() print(result) print(result1)
結果
ab12
('ab', '12')
re.match
re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。
語法
re.match(pattern, string, flags=0)
參數:
pattern
:匹配的正則表達式
string
:要匹配的字符串。
flags
: 標志位,用于控制正則表達式的匹配方式,如:是否區(qū)分大小寫,多行匹配等
str = 'ab12cd34ef567' info = re.compile(r'([a-z]{2})(\d{2})') result = info.match(str).group() result1 = info.match(str).groups() print(result) print(result1)
結果
ab12
('ab', '12')
str1 = '0b12cd34ef567' result1 = info.match(str1).group() print(result1)
結果: 會報錯
AttributeError: 'NoneType' object has no attribute 'group'
re.search
re.search 掃描整個字符串并返回第一個成功的匹配。
參數:
pattern
:匹配的正則表達式
string
:要匹配的字符串。
flags
:標志位,用于控制正則表達式的匹配方式,如:是否區(qū)分大小寫,多行匹配等
str = 'ab12cd34ef567' info = re.compile(r'([0-9]{2})') result = info.search(str).group() print(result)
結果
12
re.match與re.search的區(qū)別
re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;
re.search匹配整個字符串,直到找到一個匹配。
re.split
split 方法按照能夠匹配的子串將字符串分割后返回列表
語法
re.split(pattern, string[, maxsplit=0, flags=0])
參數:
pattern
: 匹配的正則表達式
string
:要匹配的字符串。
flags
:標志位,用于控制正則表達式的匹配方式,如:是否區(qū)分大小寫,多行匹配等
str = 'abc def g hi' result = re.split('\W+',str) print(result)
結果
['abc', 'def', 'g', 'hi']
以上就是Python中re模塊常用方法總結分析的詳細內容,更多關于Python中re模塊常用方法的資料請關注腳本之家其它相關文章!
相關文章
Python GUI編程學習筆記之tkinter中messagebox、filedialog控件用法詳解
這篇文章主要介紹了Python GUI編程學習筆記之tkinter中messagebox、filedialog控件用法,結合實例形式總結分析了Python GUI編程tkinter中messagebox、filedialog控件基本功能、用法與操作注意事項,需要的朋友可以參考下2020-03-03