在日常開(kāi)發(fā)當(dāng)中,我們肯定會(huì)有遇到很多需要正則表達(dá)式處理的地方。下面來(lái)分享一下我了解到的Python正則表達(dá)式知識(shí)。

十年的巴彥淖爾網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整巴彥淖爾建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“巴彥淖爾網(wǎng)站設(shè)計(jì)”,“巴彥淖爾網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
re.match的作用是嘗試從字符串的起始位置匹配一個(gè)模式,如果不是起始位置匹配成功的話,match()就返回 none。具體的語(yǔ)法是:
re.match(pattern, string, flags=0)
參數(shù)說(shuō)明:
1.pattern:匹配的正則表達(dá)式;
2.string:要匹配的字符串;
3.flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫(xiě),多行匹配等等。
Python 的 re 模塊(Regular Expression 正則表達(dá)式)提供各種正則表達(dá)式的匹配操作。
在文本解析、復(fù)雜字符串分析和信息提取時(shí)是一個(gè)非常有用的工具 ,下面總結(jié)了 re 模塊的常用方法。
d 匹配所有的十進(jìn)制數(shù)字 0-9
D 匹配所有的非數(shù)字,包含下劃線
s 匹配所有空白字符(空格、TAB等)
S 匹配所有非空白字符,包含下劃線
w 匹配所有字母、漢字、數(shù)字 a-z A-Z 0-9
W 匹配所有非字母、漢字、數(shù)字,包含下劃線
備注:符號(hào).* 貪婪,符號(hào).*? 非貪婪
[abc]:能匹配其中的單個(gè)字符
[a-z0-9]:能匹配指定范圍的字符,可取反(在最前面加入^)
[2-9] [1-3]:能夠做組合匹配
4.{ }:用于標(biāo)記前面的字符出現(xiàn)的頻率,有如下情況:
{n,m}:代表前面字符最少出現(xiàn)n次,最多出現(xiàn)m次
{n,}:代表前面字符最少出現(xiàn)n次,最多不受限制
{,m}:代表前面字符最多出現(xiàn)n次,最少不受限制
{n}:前面的字符必須出現(xiàn)n次
字符串中有反斜杠的,需要對(duì)反斜杠做轉(zhuǎn)義
():分組字符,可以為匹配到的內(nèi)容分組,快速獲取到分組中的數(shù)據(jù) 在正則里面 "()" 代表的是分組的意思,一個(gè)括號(hào)代表一個(gè)分組,你只能匹配到 "()" 中的內(nèi)容。
group:用于查看指定分組匹配到的內(nèi)容
groups:返回一個(gè)元組,組內(nèi)為所有匹配到的內(nèi)容
groupdict:返回一個(gè)字典,包含分組的鍵值對(duì),需要為分組命名
作用:可以將字符串匹配正則表達(dá)式的部分割開(kāi)并返回一個(gè)列表
flags定義包括:
re.I:忽略大小寫(xiě)
re.L:表示特殊字符集 w, W, b, B, s, S 依賴于當(dāng)前環(huán)境
re.M:多行模式
re.S:’.’并且包括換行符在內(nèi)的任意字符(注意:’.’不包括換行符)
re.U:表示特殊字符集 w, W, b, B, d, D, s, S 依賴于 Unicode 字符屬性數(shù)據(jù)庫(kù)
在 Python 中使用正則表達(dá)式之前,先使用以下命令導(dǎo)入 re 模塊
例如:
‘(d)(a)1’ 表示:匹配第一是數(shù)字,第二是字符a,第三 1 必須匹配第一個(gè)一樣的數(shù)字重復(fù)一次,也就是被引用一次。
如 “9a9” 被匹配,但 “9a8” 不會(huì)被匹配,因?yàn)榈谌坏?1 必須是 9 才可以。
‘(d)(a)2’ 表示:匹配第一個(gè)是一個(gè)數(shù)字,第二個(gè)是a,第三個(gè) 2 必須是第二組()中匹配一樣的。
如 “8aa” 被匹配,但 “8ab”,“7a7” 不會(huì)被匹配,第三位必須是第二組字符的復(fù)制版,也是就引用第二組正則的匹配內(nèi)容。
其他關(guān)于Python的總結(jié)文章請(qǐng)?jiān)L問(wèn):
正則表達(dá)式用來(lái)匹配字符串,在python中可以使用 re 模塊來(lái)完成,本篇做一個(gè)對(duì)正則表達(dá)式的匹配規(guī)則的總結(jié)
在上述的精確匹配后可以跟上一些符號(hào)來(lái)進(jìn)行模糊的匹配:
可以使用中括號(hào)的形式進(jìn)行范圍匹配,中括號(hào)表達(dá)式后邊可以跟上上述模糊匹配的符號(hào)來(lái)表示數(shù)量
多個(gè)條件可以 緊跟著寫(xiě)在同一個(gè)中括號(hào)中 ,比如:
[a-zA-Z] :匹配一個(gè)大、小寫(xiě)字母
* 提取字典中的【】?jī)?nèi)的字符,生成可以導(dǎo)入到五筆詞庫(kù)中的txt文件。
生成后的結(jié)果:
因?yàn)檎齽t表達(dá)式語(yǔ)法很難讀,因此本次程序以多次的方式來(lái)講解。
括號(hào)中的 . 表示一個(gè)字符的通配符,可以用來(lái)表示任意字符。
+表示字符數(shù)量,數(shù)量為一個(gè)以上
【.+】表示匹配所有括號(hào)內(nèi)的字符,括號(hào)內(nèi)字符至少有一個(gè)或以上。 比如【啊】或者【阿公】就會(huì)被匹配進(jìn)去,而【】就不會(huì)被匹配進(jìn)去
只要用()把你想要的部分框起來(lái)就可以。比如? 【(匹配的字符)】 ,最后出現(xiàn)的就是 匹配的字符
【.+】 =》 【(.+)】
效果:
最后結(jié)果如上,紅框里面有哪里不對(duì)?查看原文:
原來(lái)【阿蘭若】的前括號(hào) 和 【蘭若】 的 后括號(hào) 匹配了。這是因?yàn)檫@里使用的是貪婪模式,換句話說(shuō),
【1】【2】 匹配出來(lái)的不會(huì)是? 1? 2 兩個(gè)字符,而是: 1】【2
我們要把它改成懶惰模式:
【(.+)】=》【(.+?)】
那個(gè)問(wèn)號(hào)表示的就是懶惰模式
正則表達(dá)式是一個(gè)特殊的字符序列,可以幫助您使用模式中保留的專門語(yǔ)法來(lái)匹配或查找其他字符串或字符串集。 正則表達(dá)式在UNIX世界中被廣泛使用。
注:很多開(kāi)發(fā)人員覺(jué)得正則表達(dá)式比較難以理解,主要原因是缺少使用或不愿意在這上面花時(shí)間。
re模塊在Python中提供對(duì)Perl類正則表達(dá)式的完全支持。如果在編譯或使用正則表達(dá)式時(shí)發(fā)生錯(cuò)誤,則re模塊會(huì)引發(fā)異常re.error。
在這篇文章中,將介紹兩個(gè)重要的功能,用來(lái)處理正則表達(dá)式。 然而,首先是一件小事:有各種各樣的字符,這些字符在正則表達(dá)式中使用時(shí)會(huì)有特殊的意義。 為了在處理正則表達(dá)式時(shí)避免混淆,我們將使用:r'expression'原始字符串。
匹配單個(gè)字符的基本模式
編譯標(biāo)志可以修改正則表達(dá)式的某些方面。標(biāo)志在re模塊中有兩個(gè)名稱:一個(gè)很長(zhǎng)的名稱,如IGNORECASE,和一個(gè)簡(jiǎn)短的單字母形式,如。
1.match函數(shù)
此函數(shù)嘗試將RE模式與可選標(biāo)志的字符串進(jìn)行匹配。
下面是函數(shù)的語(yǔ)法 :
這里是參數(shù)的描述 :
pattern : 這是要匹配的正則表達(dá)式。
string : 這是字符串,它將被搜索用于匹配字符串開(kāi)頭的模式。 |
flags : 可以使用按位OR(|)指定不同的標(biāo)志。 這些是修飾符,如下表所列。
re.match函數(shù)在成功時(shí)返回匹配對(duì)象,失敗時(shí)返回None。使用match(num)或groups()函數(shù)匹配對(duì)象來(lái)獲取匹配的表達(dá)式。
示例
當(dāng)執(zhí)行上述代碼時(shí),會(huì)產(chǎn)生以下結(jié)果 :
2.search函數(shù)
此函數(shù)嘗試將RE模式與可選標(biāo)志的字符串進(jìn)行匹配。
下面是這個(gè)函數(shù)的語(yǔ)法 :
這里是參數(shù)的描述 :
pattern : 這是要匹配的正則表達(dá)式。
string : 這是字符串,它將被搜索用于匹配字符串開(kāi)頭的模式。 |
flags : 可以使用按位OR(|)指定不同的標(biāo)志。 這些是修飾符,如下表所列。
re.search函數(shù)在成功時(shí)返回匹配對(duì)象,否則返回None。使用match對(duì)象的group(num)或groups()函數(shù)來(lái)獲取匹配的表達(dá)式。
示例
當(dāng)執(zhí)行上述代碼時(shí),會(huì)產(chǎn)生以下結(jié)果 :
3.匹配與搜索
Python提供基于正則表達(dá)式的兩種不同的原始操作:match檢查僅匹配字符串的開(kāi)頭,而search檢查字符串中任何位置的匹配(這是Perl默認(rèn)情況下的匹配)。
示例
當(dāng)執(zhí)行上述代碼時(shí),會(huì)產(chǎn)生以下結(jié)果 :
4.搜索和替換
使用正則表達(dá)式re模塊中的最重要的之一是sub。
模塊
此方法使用repl替換所有出現(xiàn)在RE模式的字符串,替換所有出現(xiàn),除非提供max。此方法返回修改的字符串。
示例
當(dāng)執(zhí)行上述代碼時(shí),會(huì)產(chǎn)生以下結(jié)果 :
5.正則表達(dá)式修飾符:選項(xiàng)標(biāo)志
正則表達(dá)式文字可能包含一個(gè)可選修飾符,用于控制匹配的各個(gè)方面。 修飾符被指定為可選標(biāo)志。可以使用異或(|)提供多個(gè)修飾符,如前所示,可以由以下之一表示 :
6.正則表達(dá)模式
除了控制字符(+ ? . * ^ $ ( ) [ ] { } | ),所有字符都與其自身匹配。 可以通過(guò)使用反斜杠將其轉(zhuǎn)換為控制字符。
7.正則表達(dá)式示例
字符常量
字符類
特殊字符類
重復(fù)匹配
非貪婪重復(fù)
這匹配最小的重復(fù)次數(shù) :
用圓括號(hào)分組
反向引用
這與以前匹配的組再次匹配 :
備擇方案
python|perl : 匹配“python”或“perl”
rub(y|le) : 匹配 “ruby” 或 “ruble”
Python(!+|?) : “Python”后跟一個(gè)或多個(gè)! 還是一個(gè)?
錨點(diǎn)
這需要指定匹配位置。
帶括號(hào)的特殊語(yǔ)法
開(kāi)課吧廣場(chǎng)-人才學(xué)習(xí)交流平臺(tái)-開(kāi)課吧
網(wǎng)站標(biāo)題:python函數(shù)匹配正則,python正則化匹配
分享路徑:http://chinadenli.net/article27/dsiedjj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、用戶體驗(yàn)、自適應(yīng)網(wǎng)站、響應(yīng)式網(wǎng)站、網(wǎng)站排名、網(wǎng)站收錄
聲明:本網(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)