python3中RE正則表達式的示例分析-創(chuàng)新互聯(lián)

小編給大家分享一下python3中RE正則表達式的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比潮陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式潮陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋潮陽地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

1.引入正則模塊(Regular Expression)

要使用python3中的RE則必須引入 re模塊

import re #引入正則表達式

2.主要使用的方法 match(), 從左到右進行匹配

#pattern 為要校驗的規(guī)則
#str 為要進行校驗的字符串
result = re.match(pattern, str) 
 
#如果result不為None,則group方法則對result進行數(shù)據(jù)提取

3. 正則表達式

1??單字符匹配規(guī)則

字符 功能
.  匹配任意1個字符(除了\n)
[]  匹配[]中列舉的字符
\d  匹配數(shù)字,也就是0-9
\D  匹配非數(shù)字,也就是匹配不是數(shù)字的字符
\s  匹配空白符,也就是 空格\tab
\S  匹配非空白符,\s取反
\w  陪陪單詞字符, a-z, A-Z, 0-9, _
\W  匹配非單詞字符, \w取反

2??表示數(shù)量的規(guī)則

字符 功能
*  匹配前一個字符出現(xiàn)0次多次或者無限次,可有可無,可多可少
+  匹配前一個字符出現(xiàn)1次多次或則無限次,直到出現(xiàn)一次
?  匹配前一個字符出現(xiàn)1次或者0次,要么有1次,要么沒有
{m}  匹配前一個字符出現(xiàn)m次
{m,} 匹配前一個字符至少出現(xiàn)m次
{m,n} 匹配前一個字符出現(xiàn)m到n次

例一: 驗證手機號碼是否符合規(guī)則(不考慮邊界問題)

#首先清楚手機號的規(guī)則
#1.都是數(shù)字 2.長度為11 3.第一位是1 4.第二位是35678中的一位
 
pattern = "1[35678]\d{9}"
phoneStr = "18230092223"
 
result = re.match(pattern, phoneStr)
result.group()
 
#執(zhí)行結(jié)果如下圖:

python3中RE正則表達式的示例分析

4. 原始字符串raw, 先來看如下實例:

python3中RE正則表達式的示例分析

在上圖中: 在給str賦值"\nabc"前加上"r"之后,python解釋器會自動給str的值"\nabc"在加上一個"\".

使str在被打印的時候,能夠保持原始字符串的值"\nabc"打印出來.

例二: (原始字符串在正則表達式中的應(yīng)用)

python3中RE正則表達式的示例分析

假若沒有原始自付出r,則我們就要進行如下的操作: 給pattern加上雙倍的"\"以避免轉(zhuǎn)義字符中減少"\".會比較麻煩

當(dāng)我們使用r原始字符串時,就不必考慮字符串的轉(zhuǎn)移問題,更易集中解決字符匹配問題.

python3中RE正則表達式的示例分析

5. 表示邊界

字符 功能
^  匹配字符串開頭
$  匹配字符串結(jié)尾
\b  匹配一個單詞的邊界
\B  匹配非單詞邊界

例三: 邊界(制定規(guī)則來匹配str="ho ve r")

import re
 
#定義規(guī)則匹配str="ho ve r"
#1. 以字母開始
#2. 中間有空字符
#3. ve兩邊分別限定匹配單詞邊界
 
pattern = r"^\w+\s\bve\b\sr"
str = "ho ve r"
result = re.match(pattern, str)
result.group()

6. 匹配分組

字符  功能
|   匹配左右任意一個表達式
(ab)  將括號中字符作為一個分組
\num  引用分組num匹配到的字符串
(?P<name>) 分組起別名
(?P=name) 引用別名為name分組匹配到的字符串

例四: 匹配出0-100之間的數(shù)字

import re
 
#匹配出0-100之間的數(shù)字
#首先:正則是從左往又開始匹配
#經(jīng)過分析: 可以將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}$"
#測試數(shù)據(jù)為0,3,27,100,123
result = re.match(pattern, "27")
result.group()
 
#將0考慮到1-99上,上述pattern還可以簡寫為:pattern=r"100$|[1-9]?\d{0,1}$"
#測試結(jié)果如下圖:

python3中RE正則表達式的示例分析

例五: 匹配分組,獲取頁面中的<h2>標(biāo)簽中的內(nèi)容

import re
#匹配分組,獲取頁面<h2>標(biāo)簽中的內(nèi)容, 爬蟲的時候會用到
 
str = "<h2>hello world!<h2>"
pattern = r"<h2>(.*)</h2>"
result = re.match(pattern, str)
result.group()
 
#執(zhí)行如下圖

python3中RE正則表達式的示例分析

例六: 分組引用, 精確獲取多個標(biāo)簽內(nèi)的內(nèi)容

import re
 
#引用分組,精確獲取多個標(biāo)簽內(nèi)的內(nèi)容
#"\1"是對第一個分組的引用,同理......
 
str = "<span><h2>hello world!</h2></span>"
pattern = r"<(.+)><(.+)>.*</\2></\1>"
result = re.match(pattern, str)
result.groups()
 
#執(zhí)行如下圖:

python3中RE正則表達式的示例分析

例七-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正則表達式的示例分析

以上是“python3中RE正則表達式的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前題目:python3中RE正則表達式的示例分析-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://muchs.cn/article16/pscgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、網(wǎng)站排名、域名注冊、微信公眾號、電子商務(wù)、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計