Python正則表達(dá)式和re庫知識(shí)點(diǎn)總結(jié)
正則表達(dá)式是定義搜索模式的字符序列。通常這種模式被字符串搜索算法用于字符串上的“查找”或“查找和替換”操作,或者用于輸入驗(yàn)證。
1. 正則表達(dá)式的語法
. 表示任何單個(gè)字符
[] 字符集,對(duì)單個(gè)字符給出取值范圍
[^] 非字符集,對(duì)單個(gè)字符給出排除范圍
*前一個(gè)字符0次或者無限次擴(kuò)展
+前一個(gè)字符1次或無限次擴(kuò)展
?前一個(gè)字符0次或1次擴(kuò)展
|左右表達(dá)式任意一個(gè)
{m}擴(kuò)展前一個(gè)字符m次
{m,n}擴(kuò)展前一個(gè)字符m至n次
^匹配字符串開頭
$匹配字符串結(jié)尾
()分組標(biāo)記,內(nèi)部只能使用|操作符
d數(shù)字,等價(jià)于[0-9]
w單詞字符,等價(jià)于[A-Z,a-z,0-9]
2. python中re庫的使用
Re庫是python的標(biāo)準(zhǔn)庫,主要用于字符串匹配,調(diào)用方法:import re
2.1. 正則表達(dá)式字符串的類型
re庫采用raw string類型來表示正則表達(dá)式,表示為
r'text'
raw string是不包含對(duì)轉(zhuǎn)義符的再次轉(zhuǎn)義的字符串,總而言就是string會(huì)對(duì)字符轉(zhuǎn)義,而raw string不會(huì),因?yàn)樵谡齽t表達(dá)中會(huì)出現(xiàn)轉(zhuǎn)義符號(hào),所以避免繁瑣我們使用raw string
2.2. Re庫主要功能函數(shù)
re.search()在一個(gè)字符串中搜索正則表達(dá)式的第一個(gè)位置,返回match對(duì)象
re.match()從一個(gè)字符串的開始位置起匹配正則表達(dá)式,返回match對(duì)象
re.findall()搜索字符串,以列表類型返回全部能匹配的子串
re.split()將一個(gè)字符串按照正則表達(dá)式匹配結(jié)果進(jìn)行分割,返回列表類型
re.finditer()搜索字符串,返回一個(gè)匹配結(jié)果的迭代類型,每個(gè)迭代元素是match對(duì)象
re.sub()在一個(gè)字符串中替換所有匹配正則表達(dá)式的子串,返回替換后的字符串
2.2.1. re.search(pattern, string, flags=0)
在一個(gè)字符串中搜索正則表達(dá)式的第一個(gè)位置,返回match對(duì)象
pattern : 正則表達(dá)式的字符串或原生字符串表示
string : 待匹配字符串
flags : 正則表達(dá)式使用時(shí)的控制標(biāo)記
re.I re.IGNORECASE 忽略正則表達(dá)式的大小寫,[A‐Z]能夠匹配小寫字符
re.M re.MULTILINE 正則表達(dá)式中的^操作符能夠?qū)⒔o定字符串的每行當(dāng)作匹配開始
re.S re.DOTALL 正則表達(dá)式中的.操作符能夠匹配所有字符,默認(rèn)匹配除換行外的所有字符
舉例說明:
import re match = re.search(r'[1-9]\d{5}', 'BIT 100081') if match: print(match.group(0)) 結(jié)果為100081
2.2.2. re.match(pattern, string, flags=0)
從一個(gè)字符串的開始位置起匹配正則表達(dá)式,返回match對(duì)象
參數(shù)同search函數(shù)
舉例說明:
import re match = re.match(r'[1-9]\d{5}', 'BIT 100081') print(match.group(0)) 結(jié)果會(huì)報(bào)錯(cuò),match為空,因?yàn)閙atch函數(shù)是 從字符串開始位置開始匹配,因?yàn)閺拈_始位置沒有匹配到,所以為空
2.2.3. re.findall(pattern, string, flags=0)
搜索字符串,以列表類型返回全部能匹配的子串
參數(shù)同search
舉例說明:
import re ls=re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084') print(ls) 結(jié)果為['100081', '100084']
2.2.4. re.split(pattern, string, maxsplit=0, flags=0)
將一個(gè)字符串按照正則表達(dá)式匹配結(jié)果進(jìn)行分割返回列表類型
maxsplit : 最大分割數(shù),剩余部分作為最后一個(gè)元素輸出
舉例說明 :
import re re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084') 結(jié)果['BIT', ' TSU', ' '] re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit=1) 結(jié)果['BIT', ' TSU100081']
2.2.5. re.finditer(pattern, string, maxsplit=0, flags=0)
搜索字符串,返回一個(gè)匹配結(jié)果的迭代類型,每個(gè)迭代元素是match對(duì)象
參數(shù)同search
舉例說明 :
import re for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'): if m: print(m.group(0)) 結(jié)果為 100081 100084
2.2.6. re.sub(pattern, repl, string, count=0, flags=0)
在一個(gè)字符串中替換所有匹配正則表達(dá)式的子串返回替換后的字符串
repl : 替換匹配字符串的字符串
count : 匹配的最大替換次數(shù)
舉例說明:
import re re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084') 結(jié)果為 'BIT:zipcode TSU:zipcode'
2.3 Re庫的另一種等價(jià)用法(面向?qū)ο螅?/strong>
rst=re.search(r'[1-9]\d{5}', 'BIT 100081') 函數(shù)式的調(diào)用,一次性操作 pat=re.compile(r'[1-9]\d{5}') rst=pat.search('BIT 100081') 編譯后多次操作
regex=re.complie(pattern,flags=0)
regex也有以上六種用法
2.4 Re庫的Match對(duì)象
Match對(duì)象是是一次匹配的結(jié)果,包含匹配的很多信息
以下是Match對(duì)象的屬性
.string 待匹配的文本
.re 匹配時(shí)使用的patter對(duì)象(正則表達(dá)式)
.pos 正則表達(dá)式搜索文本的開始位置
.endpos 正則表達(dá)式搜索文本的結(jié)束位置
以下是Match對(duì)象的方法
.group(0) 獲得匹配后的字符串
.start() 匹配字符串在原始字符串的開始位置
.end() 匹配字符串在原始字符串的結(jié)束位置
.span() 返回(.start(), .end())
2.5 Re庫的貪婪匹配和最小匹配
當(dāng)正則表達(dá)式可以匹配長短不同的多項(xiàng)時(shí),返回哪一個(gè)呢?Re庫默認(rèn)采用貪婪匹配,即返回匹配最長的子串
最小匹配
*? 前一個(gè)字符0次或無限次擴(kuò)展,最小匹配
+? 前一個(gè)字符1次或無限次擴(kuò)展,最小匹配
?? 前一個(gè)字符0次或1次擴(kuò)展,最小匹配
{m,n}? 擴(kuò)展前一個(gè)字符m至n次(含n),最小匹配
只要長度輸出可能不同的,都可以通過在操作符后增加?變成最小匹配
上一篇:Python正則表達(dá)式實(shí)現(xiàn)簡易計(jì)算器功能示例
欄 目:正則表達(dá)式
本文標(biāo)題:Python正則表達(dá)式和re庫知識(shí)點(diǎn)總結(jié)
本文地址:http://mengdiqiu.com.cn/a1/zhengzebiaodashi/11183.html
您可能感興趣的文章
- 01-11正則表達(dá)式實(shí)現(xiàn)添加、刪除、替換三種功能
- 01-11python 用正則表達(dá)式篩選文本信息的實(shí)例
- 01-11正則表達(dá)式之匹配數(shù)字范圍
- 01-11python爬蟲正則表達(dá)式之處理換行符
- 01-11正則表達(dá)式匹配路由的實(shí)現(xiàn)代碼
- 01-11正則表達(dá)式截取身份證號(hào)碼加密的方法
- 01-11js正則表達(dá)式 匹配兩個(gè)特定字符間的內(nèi)容示例
- 01-11MySQL使用正則表達(dá)式進(jìn)行查詢操作經(jīng)典實(shí)例總結(jié)
- 01-11python正則表達(dá)式之對(duì)號(hào)入座篇
- 01-11詳解正則表達(dá)式實(shí)現(xiàn)二代身份證號(hào)碼驗(yàn)證


閱讀排行
本欄相關(guān)
- 01-11正則表達(dá)式實(shí)現(xiàn)添加、刪除、替換三
- 01-11正則表達(dá)式之匹配數(shù)字范圍
- 01-11python 用正則表達(dá)式篩選文本信息的實(shí)
- 01-11正則表達(dá)式匹配路由的實(shí)現(xiàn)代碼
- 01-11python爬蟲正則表達(dá)式之處理換行符
- 01-11js正則表達(dá)式 匹配兩個(gè)特定字符間的
- 01-11正則表達(dá)式截取身份證號(hào)碼加密的方
- 01-11python正則表達(dá)式之對(duì)號(hào)入座篇
- 01-11MySQL使用正則表達(dá)式進(jìn)行查詢操作經(jīng)典
- 01-11詳解正則表達(dá)式實(shí)現(xiàn)二代身份證號(hào)碼
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置