python re庫的正則表達(dá)式入門學(xué)習(xí)教程
簡介
正則表達(dá)式本身是一種小型的、高度專業(yè)化的編程語言,而在python中,通過內(nèi)嵌集成re模塊,程序媛們可以直接調(diào)用來實現(xiàn)正則匹配。正則表達(dá)式模式被編譯成一系列的字節(jié)碼,然后由用C編寫的匹配引擎執(zhí)行。
下面話不多說了,來一起看看詳細(xì)的介紹吧
1. 安裝
默認(rèn)已經(jīng)安裝好了python環(huán)境了
re庫是python3的核心庫,不需要pip install,直接import就行
2. 最簡單的模式
字符本身就是最簡單的模式
比如:'A', 'I love you', 'test'
然是注意在定義模式字符串的時候,在前面加上r,它的作用是告訴編譯器,接下來的字符串是單純的字符串,請不要轉(zhuǎn)變?yōu)檗D(zhuǎn)義字符。
例子
import re pattern = r'Cookie' sequence = 'Cookie' re.match(pattern, sequence)
<re.Match object; span=(0, 6), match='Cookie'>
re.match()是常用的函數(shù),如果匹配,返回的是re.Match object.一個庫內(nèi)置的對象。如果沒有匹配返回的是None
3. 通配符
在正則表達(dá)式中,有些字符是有特殊意義的(不是轉(zhuǎn)義字符的那套規(guī)則),下面介紹常用的通配符字符
1)".":點,代表任何字符,除了換行(newline)
re.search(r'Co.k.e', 'Cookie').group()
其中g(shù)roup()函數(shù)返回匹配的字符,返回類型是str
'Cookie'
2) "\w" 反斜杠小寫w,代表任何單個字母,數(shù)字,下劃線
re.search(r'Co\wk\we', 'Cookie').group()
'Cookie'
3) "\W" 反斜杠大寫W,代表任何2)中沒有代表的字符
re.search(r'C\Wke', 'C@ke').group()
'C@ke'
4) "\s" 反斜杠小寫s,代表一些空格字符,比如空格(space),換行(new line),跳格鍵(tab),回車(return)
re.search(r'Eat\scake', 'Eat cake').group()
'Eat cake'
5) "\S" 反斜杠大寫S,代表任何4)中沒有代表的字符
re.search(r'Cook\Se', 'Cookie').group()
'Cookie'
6) "\t" 反斜杠小寫t,代表跳格鍵(tab)
7) "\n" 反斜杠小寫t,代表換行(new line)
8) "\r" 反斜杠小寫t,代表回車(return)
9) "\d" 反斜杠小寫d,代表單個數(shù)字0-9
re.search(r'c\d\dkie', 'c00kie').group()
'c00kie'
10) "^" 這個鍵不知道叫什么,代表從字符開頭要匹配
re.search(r'^Eat', 'Eat cake').group()
'Eat'
11) "$" 美元符號,代表從字符結(jié)尾要匹配
re.search(r'cake$', 'Eat cake').group()
'cake'
12) "[abc]" 中括號中任意字符,代表匹配其中任意字符
常用的方式,比如[a-zA-Z0-9],或者如果中括號中第一個字符是"^",代表不是這個范圍內(nèi)的字符
re.search(r'Number: [0-6]', 'Number: 5')
<re.Match object; span=(0, 9), match='Number: 5'>
再來個不在范圍內(nèi)的
re.search(r'Number: [^0-6]', 'Number: 7')
<re.Match object; span=(0, 9), match='Number: 7'>
4. 重復(fù)
第三部分介紹了單個通配符,那么怎么定義一串通配符呢,利用一些重復(fù)的標(biāo)志
1) "+" 加號,表示在它左邊的字符出現(xiàn)一次或者多次
re.search(r'Co+kie', 'Cooookie')
<re.Match object; span=(0, 8), match='Cooookie'>
2) "*" 乘號,表示在它左邊的字符出現(xiàn)零次或者多次
re.search(r'Ca*o*kie', 'Caokie').group()
'Caokie'
3) "?" 問號,表示在它左邊的字符出現(xiàn)零次或者一次
re.search(r'Colou?r', 'Color').group()
'Color'
4) {x} 大括號加數(shù)字,重復(fù)確切幾次
5) {x,} 重復(fù)至少幾次
6) {x, y} 重復(fù)至少x次,不超過y次
re.search(r'\d{9,10}', '0987654321').group()
'0987654321'
5. 分組
比如說想定義一個email的格式,@之前的是一個規(guī)則,之后的是一個規(guī)則,那么通過()圓括號來分為兩組,分別定義在一個正則表達(dá)式中
然后如果滿足的話,通過group()函數(shù)指定返回哪一組的結(jié)果
比如
email_address = 'Please contact us at: support@datacamp.com' match = re.search(r'([\w+-]+)@([\w\.-]+)', 'tw7613781@gmail.com') if match: print(match.group()) # The whole matched text print(match.group(1)) # The username (group 1) print(match.group(2)) # The host (group 2)
tw7613781@gmail.com tw7613781 gmail.com
@前為第一部分,\w代表代表任何單個字母,數(shù)字,下劃線,上面已經(jīng)介紹了,然后就是"\w"和"+"和"-"隨便哪一個至少一個或者多個
@后為第二部分,其余一樣,就是多了個"\.",因為"."代表的是任意字符了,如果想表達(dá)真正的點,用"\."來表示。
6. python庫函數(shù)re的常用函數(shù)
1) re.search(pattern, string)和re.match(pattern, string)
區(qū)別在于search能從string中尋找任何滿足pattern的substring,但是match必須從頭開始
pattern = "cookie" sequence = "Cake and cookie" re.search(pattern, sequence).group()
'cookie'
如果是match會返回None
2) re.findall(pattern, string)
尋找string所有滿足pattern的substring,然后以list的形式返回
email_address = "Please contact us at: support@datacamp.com, xyz@datacamp.com" #'addresses' is a list that stores all the possible match addresses = re.findall(r'[\w\.-]+@[\w\.-]+', email_address) for address in addresses: print(address)
support@datacamp.com xyz@datacamp.com
3) re.compile(pattern)
通過compile函數(shù)會生成一個pattern對象,這個pattern對象可以直接使用match,search等函數(shù)
In: pattern = re.compile(r"cookie") In: pattern Out: re.compile(r'cookie', re.UNICODE) In: pattern.search('cookie') Out: <re.Match object; span=(0, 6), match='cookie'>
學(xué)習(xí)材料
https://www.datacamp.com/community/tutorials/python-regular-expression-tutorial
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對我們的支持。
上一篇:正則表達(dá)式使用示例詳解
欄 目:正則表達(dá)式
本文標(biāo)題:python re庫的正則表達(dá)式入門學(xué)習(xí)教程
本文地址:http://mengdiqiu.com.cn/a1/zhengzebiaodashi/11179.html
您可能感興趣的文章
- 01-11python 用正則表達(dá)式篩選文本信息的實例
- 01-11python爬蟲正則表達(dá)式之處理換行符
- 01-11正則表達(dá)式匹配路由的實現(xiàn)代碼
- 01-11正則表達(dá)式截取身份證號碼加密的方法
- 01-11js正則表達(dá)式 匹配兩個特定字符間的內(nèi)容示例
- 01-11python正則表達(dá)式之對號入座篇
- 01-11Python爬蟲之正則表達(dá)式基本用法實例分析
- 01-11正則表達(dá)式re.sub替換不完整的問題及完整解決方案
- 01-11Python正則表達(dá)式中的re.S的作用詳解
- 01-11只能輸入正整數(shù)的正則表達(dá)式及常用的正則表達(dá)式


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