您好,登錄后才能下訂單哦!
這篇文章主要介紹Python中正則表達式及其常用匹配函數(shù)有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。
/簡介/
Python 自1.5版本起增加了re 模塊,它提供 Perl風格的正則表達式模式。re 模塊使得Python 語言擁有全部的正則表達式功能。
compile 函數(shù)根據(jù)一個模式字符串和可選的標志參數(shù)生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。
re 模塊也提供了與這些方法功能完全一致的函數(shù),這些函數(shù)使用一個模式字符串做為它們的第一個參數(shù)。
/re.match函數(shù)/
re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。語法如下所示:
re.match(pattern, string, flags=0)
“pattern”匹配的正則表達式“string”要匹配的字符串“flags”標志位。
匹配成功re.match方法返回一個匹配的對象,否則返回None。
我們可以使用group(num)或 groups() 匹配對象函數(shù)來獲取匹配表達式。
group(num=0) 匹配的整個表達式的字符串,“group()”可以一次輸入多個組號,在這種情況下它將返回一個包含那些組所對應(yīng)值的元組。
下圖是個實際例子:
輸出結(jié)果如下圖所示:
/檢索和替換/
Python 的re模塊提供了re.sub用于替換字符串中的匹配項。語法如下所示:
re.sub(pattern, repl, string, count=0, flags=0)
參數(shù):
pattern : 正則中的模式字符串。
repl : 替換的字符串,也可為一個函數(shù)。
string : 要被查找替換的原始字符串。
count : 模式匹配后替換的最大次數(shù),默認 0 表示替換所有的匹配。
flags : 編譯時用的匹配模式,數(shù)字形式。
前三個為必參數(shù),后兩個為可選參數(shù)。
下圖是個實際例子:
輸出結(jié)果如下圖所示:
/compile函數(shù)/
compile 函數(shù)用于編譯正則表達式,供match() 和 search() 這兩個函數(shù)使用。語法格式為:
re.compile(pattern[, flags])
參數(shù):
pattern : 一個字符串形式的正則表達式
flags 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數(shù)為:
re.I 忽略大小寫
re.L 表示特殊字符集 \w,\W, \b, \B, \s, \S 依賴于當前環(huán)境
re.M 多行模式
re.S 即為' . '并且包括換行符在內(nèi)的任意字符(' . '不包括換行符)
re.U 表示特殊字符集 \w,\W, \b, \B, \d, \D, \s, \S 依賴于 Unicode 字符屬性數(shù)據(jù)庫
re.X 為了增加可讀性,忽略空格和'# '后面的注釋
/正則表達式對象/
re.RegexObject:re.compile() 返回RegexObject 對象。
re.MatchObject:group() 返回被 RE 匹配的字符串。
start() 返回匹配開始的位置
end() 返回匹配結(jié)束的位置
span() 返回一個元組包含匹配 (開始,結(jié)束) 的位置
/正則表達式修飾符 - 可選標志/
正則表達式可以包含一些可選標志修飾符來控制匹配的模式。修飾符被指定為一個可選的標志。多個標志可以通過按位 OR(|) 它們來指定。如 re.I| re.M 被設(shè)置成 I 和 M 標志:
/正則表達式模式/
模式字符串使用特殊的語法來表示一個正則表達式:
字母和數(shù)字表示他們自身。一個正則表達式模式中的字母和數(shù)字匹配同樣的字符串。
多數(shù)字母和數(shù)字前加一個反斜杠時會擁有不同的含義。
標點符號只有被轉(zhuǎn)義時才匹配自身,否則它們表示特殊的含義。
反斜杠本身需要使用反斜杠進行轉(zhuǎn)義。
由于正則表達式通常都包含反斜杠,所以你最好使用原始字符串來表示它們。模式元素(如 r'\t',等價于 \\t )匹配相應(yīng)的特殊字符。
下表列出了正則表達式模式語法中的特殊元素。如果你使用模式的同時提供了可選的標志參數(shù),某些模式元素的含義會改變。
正則表達式實例
字符匹配
字符類
/實際應(yīng)用/
以貓眼電影為例。我們需要獲取(電影的名字作者,上映時間)等等都可以用正則表達式來解析。
分析一下,利用正則表達式提取。
可以看到我們要的名字在一個a里面,而他們被一個div包裹著。
我們把div想象成一個盒子,可以看到div里面還有一個div 我們可以先找他上面一層的div是一個表單<dl class=”movie_item_info”>再找到它的上一層的盒子div<div class= ”board-iten-main” >一般來說我們找到前兩層就可以找到我們要的結(jié)果。如果不對就再找?guī)讓印?/p>
分析完再實際操作一下:
pattern = re.compile('<div>.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>',re.S)
(.*?)表示我們要的內(nèi)容<p class=”star”>(.*?)</p>里面的主演也是我們要的這樣我們就可以得到我們想要得多個數(shù)據(jù)。
/小結(jié)/
1. 正則表達式適合一些需要獲取多個數(shù)據(jù)的場景。它能夠以更快捷的方式去獲取到我們想要的數(shù)據(jù)。
2. 本Python教程主要介紹了正則表達式,及其基本用法,具體每個字符的用法,可以參考前言里邊的正則表達式系列文章,希望能夠幫助大家更好的了解正則表達式的用法。
以上是“Python中正則表達式及其常用匹配函數(shù)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。