python大法好——Python Regex

來源:互聯網
上載者:User

標籤:預設   特殊   掃描   形式   列表   編譯   模式比對   參數說明   DPoS   

Python Regex

Regex是一個特殊的字元序列,它能協助你方便的檢查一個字串是否與某種模式比對。

Python 自1.5版本起增加了re 模組,它提供 Perl 風格的Regex模式。

re 模組使 Python 語言擁有全部的Regex功能。

compile 函數根據一個模式字串和可選的標誌參數產生一個Regex對象。該對象擁有一系列方法用於Regex匹配和替換。

re 模組也提供了與這些方法功能完全一致的函數,這些函數使用一個模式字串做為它們的第一個參數。

本章節主要介紹Python中常用的Regex處理函數。

re.match函數

re.match 嘗試從字串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。

函數文法

re.match(pattern, string, flags=0)

函數參數說明:

pattern     匹配的Regex

string        要匹配的字串。

flags         標誌位,用於控制Regex的匹配方式,如:是否區分大小寫,多行匹配等等。參見:Regex修飾符 - 可選標誌

匹配成功re.match方法返回一個匹配的對象,否則返回None。

我們可以使用group(num) 或 groups() 匹配對象函數來擷取匹配運算式。

import reprint(re.match(‘www‘, ‘www.runoob.com‘).span())  # 在起始位置匹配print(re.match(‘com‘, ‘www.runoob.com‘))         # 不在起始位置匹配
import re line = "Cats are smarter than dogs" matchObj = re.match( r‘(.*) are (.*?) .*‘, line, re.M|re.I) if matchObj:   print "matchObj.group() : ", matchObj.group()   print "matchObj.group(1) : ", matchObj.group(1)   print "matchObj.group(2) : ", matchObj.group(2)else:   print "No match!!"
結果
matchObj.group() : Cats are smarter than dogsmatchObj.group(1) : CatsmatchObj.group(2) : smarter
re.search方法

re.search 掃描整個字串並返回第一個成功的匹配。

函數文法:

re.search(pattern, string, flags=0)

函數參數說明:

pattern    匹配的Regex

string      要匹配的字串。

匹配成功re.search方法返回一個匹配的對象,否則返回None。

我們可以使用group(num) 或 groups() 匹配對象函數來擷取匹配運算式。

 group(num=0)      匹配的整個運算式的字串,group() 可以一次輸入多個組號,在這種情況下它將返回一個包含那些組所對應值的元組。

import reprint(re.search(‘www‘, ‘www.runoob.com‘).span())  # 在起始位置匹配print(re.search(‘com‘, ‘www.runoob.com‘).span())         # 不在起始位置匹配

以上執行個體運行輸出結果為:

(0, 3)(11, 14)
re.match與re.search的區別

re.match只匹配字串的開始,如果字串開始不符合Regex,則匹配失敗,函數返回None;而re.search匹配整個字串,直到找到一個匹配。

檢索和替換

Python 的 re 模組提供了re.sub用於替換字串中的匹配項。

文法:

re.sub(pattern, repl, string, count=0, flags=0)

 

參數:

  • pattern : 正則中的模式字串。
  • repl : 替換的字串,也可為一個函數。
  • string : 要被尋找替換的原始字串。
  • count : 模式比對後替換的最大次數,預設 0 表示替換所有的匹配。
re.compile 函數

compile 函數用於編譯Regex,產生一個Regex( Pattern )對象,供 match() 和 search() 這兩個函數使用。

文法格式為:

re.compile(pattern[, flags])

參數:

  • pattern : 一個字串形式的Regex

  • flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數為:

    1. re.I 忽略大小寫
    2. re.L 表示特殊字元集 \w, \W, \b, \B, \s, \S 依賴於當前環境
    3. re.M 多行模式
    4. re.S 即為 . 並且包括分行符號在內的任一字元(. 不包括分行符號)
    5. re.U 表示特殊字元集 \w, \W, \b, \B, \d, \D, \s, \S 依賴於 Unicode 字元屬性資料庫
    6. re.X 為了增加可讀性,忽略空格和 # 後面的注釋
findall

在字串中找到Regex所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

文法格式為:

findall(string[, pos[, endpos]])

參數:

  • string : 待匹配的字串。
  • pos : 選擇性參數,指定字串的起始位置,預設為 0。
  • endpos : 選擇性參數,指定字串的結束位置,預設為字串的長度。

 

python大法好——Python Regex

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.