1. 程式人生 > >Python_正則表達式

Python_正則表達式

rac 配對 exp bsp 全部 ssi art 字符串替換 dal

正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。re 模塊使 Python 語言擁有全部的正則表達式功能。compile 函數根據一個模式字符串和可選的標誌參數生成一個正則表達式對象。該對象擁有一系列方法用於正則表達式匹配和替換。re 模塊也提供了與這些方法功能完全一致的函數,這些函數使用一個模式字符串做為它們的第一個參數。

1、re.match()函數

re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。語法格式:re.match(pattern, string, flags=0)

pattern是要匹配的正則表達式,如果在起始位置匹配成功,則返回一個匹配的對象。註意:match函數返回的對象有最大長度限制,若要獲取全部匹配結果,可以使用findall()函數,它將以列表形式返回匹配到的結果。

我們可以使用group(num) 或 groups() 匹配對象函數來獲取匹配表達式。group(num=0):匹配的整個表達式的字符串,group() 可以一次輸入多個組號,在這種情況下它將返回一個包含那些組所對應值的元組。group():返回一個包含所有小組字符串的元組,從 1 到 所含的小組號。

示例代碼:

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 dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

2、re.search()函數:

re.search 掃描整個字符串並返回第一個成功的匹配。函數語法:re.search(pattern, string, flags=0)

同樣的,我們可以使用group()來獲取返回的匹配字符串。註意:search()函數返回的對象有最大長度限制,若要獲取全部匹配結果,可以使用findall()函數,它將以列表形式返回匹配到的結果。

3、re.serach()函數與re.match()函數的區別

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

4、re.sub()函數

re.sub()函數可以將匹配到的字符串替換成指定的字符串,語法格式為:re.sub(pattern, repl, string, count=0)

pattern是匹配的正則表達式,repl是用來替換的字符串,也可以是一個函數,string是待匹配的字符串,count是模式匹配後替換的最大次數,默認 0 表示替換所有的匹配。

5、re.compile函數

compile 函數用於編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。語法格式為:re.compile(pattern[, flags])

6、re.findall函數

在字符串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。註意 match 和 search 是匹配一次 findall 匹配所有。

語法格式:re.findall(pattern, string, flags=0)

7、正則表達式模式

詳情參見:http://www.runoob.com/python3/python3-reg-expressions.html

Python_正則表達式