小編給大家分享一下python3中RE正則表達(dá)式的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1.引入正則模塊(Regular Expression)
要使用python3中的RE則必須引入 re模塊
import re #引入正則表達(dá)式
2.主要使用的方法 match(), 從左到右進(jìn)行匹配
#pattern 為要校驗(yàn)的規(guī)則 #str 為要進(jìn)行校驗(yàn)的字符串 result = re.match(pattern, str) #如果result不為None,則group方法則對(duì)result進(jìn)行數(shù)據(jù)提取
3. 正則表達(dá)式
1??單字符匹配規(guī)則
字符 功能 . 匹配任意1個(gè)字符(除了\n) [] 匹配[]中列舉的字符 \d 匹配數(shù)字,也就是0-9 \D 匹配非數(shù)字,也就是匹配不是數(shù)字的字符 \s 匹配空白符,也就是 空格\tab \S 匹配非空白符,\s取反 \w 陪陪單詞字符, a-z, A-Z, 0-9, _ \W 匹配非單詞字符, \w取反
2??表示數(shù)量的規(guī)則
字符 功能 * 匹配前一個(gè)字符出現(xiàn)0次多次或者無(wú)限次,可有可無(wú),可多可少 + 匹配前一個(gè)字符出現(xiàn)1次多次或則無(wú)限次,直到出現(xiàn)一次 ? 匹配前一個(gè)字符出現(xiàn)1次或者0次,要么有1次,要么沒(méi)有 {m} 匹配前一個(gè)字符出現(xiàn)m次 {m,} 匹配前一個(gè)字符至少出現(xiàn)m次 {m,n} 匹配前一個(gè)字符出現(xiàn)m到n次
例一: 驗(yàn)證手機(jī)號(hào)碼是否符合規(guī)則(不考慮邊界問(wèn)題)
#首先清楚手機(jī)號(hào)的規(guī)則 #1.都是數(shù)字 2.長(zhǎng)度為11 3.第一位是1 4.第二位是35678中的一位 pattern = "1[35678]\d{9}" phoneStr = "18230092223" result = re.match(pattern, phoneStr) result.group() #執(zhí)行結(jié)果如下圖:
4. 原始字符串raw, 先來(lái)看如下實(shí)例:
在上圖中: 在給str賦值"\nabc"前加上"r"之后,python解釋器會(huì)自動(dòng)給str的值"\nabc"在加上一個(gè)"\".
使str在被打印的時(shí)候,能夠保持原始字符串的值"\nabc"打印出來(lái).
例二: (原始字符串在正則表達(dá)式中的應(yīng)用)
假若沒(méi)有原始自付出r,則我們就要進(jìn)行如下的操作: 給pattern加上雙倍的"\"以避免轉(zhuǎn)義字符中減少"\".會(huì)比較麻煩
當(dāng)我們使用r原始字符串時(shí),就不必考慮字符串的轉(zhuǎn)移問(wèn)題,更易集中解決字符匹配問(wèn)題.
5. 表示邊界
字符 功能 ^ 匹配字符串開(kāi)頭 $ 匹配字符串結(jié)尾 \b 匹配一個(gè)單詞的邊界 \B 匹配非單詞邊界
例三: 邊界(制定規(guī)則來(lái)匹配str="ho ve r")
import re #定義規(guī)則匹配str="ho ve r" #1. 以字母開(kāi)始 #2. 中間有空字符 #3. ve兩邊分別限定匹配單詞邊界 pattern = r"^\w+\s\bve\b\sr" str = "ho ve r" result = re.match(pattern, str) result.group()
6. 匹配分組
字符 功能 | 匹配左右任意一個(gè)表達(dá)式 (ab) 將括號(hào)中字符作為一個(gè)分組 \num 引用分組num匹配到的字符串 (?P<name>) 分組起別名 (?P=name) 引用別名為name分組匹配到的字符串
例四: 匹配出0-100之間的數(shù)字
import re #匹配出0-100之間的數(shù)字 #首先:正則是從左往又開(kāi)始匹配 #經(jīng)過(guò)分析: 可以將0-100分為三部分 #1. 0 "0$" #2. 100 "100$" #3. 1-99 "[1-9]\d{0,1}$" #所以整合如下 pattern = r"0$|100$|[1-9]\d{0,1}$" #測(cè)試數(shù)據(jù)為0,3,27,100,123 result = re.match(pattern, "27") result.group() #將0考慮到1-99上,上述pattern還可以簡(jiǎn)寫(xiě)為:pattern=r"100$|[1-9]?\d{0,1}$" #測(cè)試結(jié)果如下圖:
例五: 匹配分組,獲取頁(yè)面中的<h2>標(biāo)簽中的內(nèi)容
import re #匹配分組,獲取頁(yè)面<h2>標(biāo)簽中的內(nèi)容, 爬蟲(chóng)的時(shí)候會(huì)用到 str = "<h2>hello world!<h2>" pattern = r"<h2>(.*)</h2>" result = re.match(pattern, str) result.group() #執(zhí)行如下圖
例六: 分組引用, 精確獲取多個(gè)標(biāo)簽內(nèi)的內(nèi)容
import re #引用分組,精確獲取多個(gè)標(biāo)簽內(nèi)的內(nèi)容 #"\1"是對(duì)第一個(gè)分組的引用,同理...... str = "<span><h2>hello world!</h2></span>" pattern = r"<(.+)><(.+)>.*</\2></\1>" result = re.match(pattern, str) result.groups() #執(zhí)行如下圖:
例七-2:分組起別名
import re #分組起別名 str = "<span><h2>hello world!</h2></span>" pattern = "<(?P<key1>.+)><(?P<key2>.+)>(?P<nr>.*)</(?P=key2)></(?P=key1)>" result = re.match(pattern, str) result.groups() #執(zhí)行如下圖:
以上是“python3中RE正則表達(dá)式的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前題目:python3中RE正則表達(dá)式的示例分析-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://chinadenli.net/article16/pscgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站排名、域名注冊(cè)、微信公眾號(hào)、電子商務(wù)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容