正則表達式在程序開發中會經常用到,比如數據(格式)驗證、替換字符內容以及提取字符串內容等等情況都會用到,但是目前許多開發人員對于正則表達式只是處于了解或者是基本會用的階段。一旦遇到大批量使用正則表達式的情況(例如網絡爬蟲)可以說基本上就抓瞎了。這篇文章我將帶領大家利用 Python 來學習一下正則表達式。在閱讀這篇文章前你需要掌握 Python 基礎知識,或者具有其他開發語言的基礎知識也可以,因為基本上每種語言使用正則表達式的方式都是類似的。
成都網站設計、成都做網站的開發,更需要了解用戶,從用戶角度來建設網站,獲得較好的用戶體驗。創新互聯公司多年互聯網經驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網絡公司,打造的就是網站建設產品直銷的概念。選擇創新互聯公司,不只是建站,我們把建站作為產品,不斷的更新、完善,讓每位來訪用戶感受到浩方產品的價值服務。零、正則表達式基礎
1.提取字符(串) 有時我們需要從一個字符串中獲取一段內容,這段內容可能是一個字符也可能是一段字符串,如果用逐字對比遍歷的話不僅耗時耗力而且還容易出錯。那么這個時候我們就可以用到正則表達式中的 字符匹配 功能。正則表達式為我們提供了 4 種字符匹配的方法,見下表:
語法 | 說明 | 例子 | 可匹配字符串 |
---|---|---|---|
. | 匹配除了換行符 “\n” 以外的任意字符 | a.b | acb、adb、a2b、a~b |
\ | 轉義,將轉移字符后面的一個字符改變原來的意思 | a[b\.\\]c | abc、a.c、a\c |
[] | 匹配括號內的任意字符 | a[b,c,d,e]f | abd、acf、adf、aef |
[^] | 除了括號內的字符外,其他的字符都匹配 | aa,b,c,d,ef | a1f、a#f、azf、agf |
2.預定義字符 所謂預定義字符就是正則表達式中為我們預留的專門用來匹配格式化內容的字符,例如匹配數字用的 \d 和匹配空白符的 \s 等等。我們可以利用預定義字符快速的匹配出一個字符串中符合要求的內容。預定義字符匹配的內容,同樣也可以利用前面所講的字符匹配的方式匹配出來,但是代碼量會相對來說多一點。下表所列的就是預定義字符:
語法 | 說明 | 例子 | 可匹配字符串 |
---|---|---|---|
^ | 以什么字符串開始 | ^123 | 123abc、123321、123zxc |
$ | 以什么字符串結尾 | 123$ | abc123、321123、zxc123 |
\b | 匹配單詞邊界,不匹配任何字符 | \basd\b | asd |
\d | 匹配數字0-9 | zx\dc | zx1c、zx2c、zx5c |
\D | 匹配非數字 | zx\Dc | zxvc、zx$c、zx&c |
\s | 匹配空白符 | zx\sc | zx c |
\S | 匹配非空白符 | zx\Sc | zxac、zx1c、zxtc |
\w | 匹配字母、數字和下劃線 | zx\wc | zxdc、zx1c、zx_c |
\W | 匹配非字母、數字和下劃線 | zx\Wc | zx c、zx$c、zx(c |
在預定義字符中有如下幾點需要注意:
3.限制數量 在某些情況下我們需要匹配重復的內容,這時我們可以使用 數量限定 模式來進行操作。數量限定如下表:
語法 | 說明 | 例子 | 可匹配字符串 |
---|---|---|---|
* | 匹配0到多次 | zxc* | zx、zxccccc |
+ | 匹配1次到多次 | zxc+ | zxc、zxccccc |
? | 匹配0次或1次 | zxc? | zxc、zx |
{m} | 匹配m次 | zxc{3}vb | zxcccvb |
{m,} | 匹配m次或多次 | zxc{3,}vb | zxcccvb、zxccccccccvb |
{,n} | 匹配0次到n次 | zxc{,3}vb | zxvb、zxcvb、zxccvb、zxcccvb |
{m,n} | 匹配m次到n次 | zxc{1,3} | zxcvb、zxccvb、zxcccvb |
4.斷言 斷言,又稱零寬斷言,指的是當斷言表達式為 True 時才進行匹配,但是并不匹配斷言表達式內容。和 ^ 代表開頭, $ 代表結尾, \b 代表單詞邊界一樣,先行斷言和后行斷言也有類似的作用,它們只匹配某些位置,在匹配過程中,不占用字符,所以被稱為零寬。所謂位置,是指字符串中第一個字符的左邊、最后一個字符的右邊以及相鄰字符的中間。零寬斷言表達式有四種:
5.貪婪/非貪婪 正則表達式會盡可能多的去匹配字符,這被稱為貪婪模式,貪婪模式是正則表達式默認的模式。但是有時候貪婪模式會給我們造成不必要的困擾,例如我們要匹配字符串 “Jack123Chen123Chen” 中的 “Jack123Chen”,但是貪婪模式匹配出的卻是 “Jack123Chen123Chen”,這時我們就需要用到非貪婪模式來解決這個問題,非貪婪模式常用的表達式如下:
語法 | 說明 |
---|---|
*? | 匹配0次或多次,但要盡可能少重復 |
+? | 匹配1次或多次,但要盡可能少重復 |
?? | 匹配0次或1次,但要盡可能少重復 |
{m,}? | 匹配m次或多次,但要盡可能少重復 |
{m,n}? | 匹配m次或n次,但要盡可能少重復 |
6.其他 上述內容在正則表達式中都是常用的,下面我們再來看看不常用到的,但是功能同樣強大的語法。
一、Python 使用正則表達式
在 Python 中使用正則表達式很簡單,re 模塊向我們提供了正則表達式的支持。使用步驟一共三步:
在 Python 中我們常用的 re 的方法有六種,分別是: compile 、 match 、 search 、 findall 、 split 和 sub ,下面就針對這六種方法進行一下講解。
compile compile 方法的作用是將正則表達式字符串轉化為 Pattern 實例,它具有兩個參數 pattern 和 flags ,pattern 參數類型是 string 類型,接收的是正則表達式字符串,flags 類型是 int 類型,接收的是匹配模式的編號,flags 參數是非必填項,默認值為 0 (忽略大小寫)。flags 匹配模式有如下 6 種:
匹配模式 | 說明 |
---|---|
re.I | 忽略大小寫 |
re.M | 多行匹配模式 |
re.S | 任意匹配模式 |
re.L | 預定義字符匹配模式 |
re.U | 限定字符匹配模式 |
re.V | 詳細模式 |
上述六種模式在實際開發中很少用到,我們只需要了解即可。 使用 compile 很簡單,如下:
import re pattern = re.compile(r'\d')
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網頁標題:Python正則表達式急速入門(小結)-創新互聯
網頁鏈接:http://vcdvsql.cn/article26/ieicg.html
成都網站建設公司_創新互聯,為您提供云服務器、服務器托管、營銷型網站建設、網站導航、網站策劃、Google
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯