Python之正規表示式 分割 檢索 替換

2021-09-23 23:45:58 字數 2626 閱讀 3067

compile 函式用於編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用。

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

split 方法按照能夠匹配的子串將字串分割後返回列表。

re.compile(pattern[, flags])
引數:

pattern : 乙個字串形式的正規表示式

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

re.i 忽略大小寫

re.l 表示特殊字符集 \w, \w, \b, \b, \s, \s 依賴於當前環境

re.m 多行模式

re.s 即為 . 並且包括換行符在內的任意字元(. 不包括換行符)

re.u 表示特殊字符集 \w, \w, \b, \b, \d, \d, \s, \s 依賴於 unicode 字元屬性資料庫

re.x 為了增加可讀性,忽略空格和 # 後面的注釋

import re

astr="a13fhg,.567ghy7dg87!'gty78"

程式:m1=re.compile(r"\d\d") #取乙個兩位數

print(m1.search(astr,2).group()) #從第二個字元開始取乙個兩位數

print(m1.findall(astr,3,12)) #從第3個字元開始,到第12個字元截止,取乙個兩位數

執行結果:

56['56']

程式:m2=re.compile(r"a",re.i) #取出字串中的「a」,不區分大小寫

print(m2.findall(astr))

執行結果:

['a']

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

pattern : 正則中的模式字串。

repl : 替換的字串,也可為乙個函式。

string : 要被查詢替換的原始字串。

count : 模式匹配後替換的最大次數,預設 0 表示替換所有的匹配。

import re

astr="a13fhg,.567ghy7dg87!'gty78"

print(re.sub("7","9",astr)) #用"9",替換字串中的"7"

m4=re.compile(r"\d+") #編譯字串中所有數字

print(m4.sub("",astr)) #用空格替換字串中所有數字

print(m4.sub("",astr,2)) #用空格替換字串中數字,替換2次

def f1(m):

return m.group().upper() #upper():將字串中的小寫字母轉為大寫字母。

print(re.sub(r"[a-z]",f1,astr)) #用大寫字母替換所有字串中的小寫字母

執行結果:

a13fhg,.569ghy9dg89!'gty98

afhg,.ghydg!'gty

afhg,.ghy7dg87!'gty78

a13fhg,.567ghy7dg87!'gty78

re.split(pattern, string[, maxsplit=0, flags=0])
引數:

pattern:匹配的正規表示式

string:要匹配的字串

maxsplit:分隔次數,maxsplit=1 分隔一次,預設為 0,不限制次數

flags:標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等

import re

astr="a13fhg,.567ghy7dg87!'gty78"

print(astr.split("13")) #以數字"13"分割字串

print(re.split("\d",astr)) #以兩位數字分割字串

print(re.split("\d+",astr)) #以所有數字分割字串

m3=re.compile(r"\d+") #先預編譯,再分割

print(m3.split(astr))

print(m3.split(astr,3)) #以所有數字分割字串,分割三次

執行結果:

['a', "fhg,.567ghy7dg87!'gty78"]

['a', 'fhg,.', '7ghy7dg', "!'gty", '']

['a', 'fhg,.', 'ghy', 'dg', "!'gty", '']

['a', 'fhg,.', 'ghy', 'dg', "!'gty", '']

['a', 'fhg,.', 'ghy', "dg87!'gty78"]

Python之正規表示式

正規表示式正規表示式主要用來匹配字串,例如 判斷乙個字串是否是乙個合法的 思想是用描述性的語言給字串乙個規則。re模組中的match函式提供了這種功能,若匹配成功則返回匹配物件,否則返回none。一 語法 d 表示匹配數字 w 表示匹配字母或數字 可以匹配任意字元 s可以匹配乙個空格或者tab 特殊...

Python之正規表示式

正規表示式元字元如下 匹配除換行符以外的所以字元 規定匹配模式必須出現在目標字串的開頭,例如 hell hello hellboy 規定匹配模式必須出現在目標字串的結尾,例如 ar car bar 其前乙個字元必須在目標物件中連續出現零次或多次 其前乙個字元必須在目標物件中連續出現一次或多次 其前乙...

Python之正規表示式

匯入re模組 檢索和替換 re.sub re.sub pattern,repl,string,count 0,flags 0 pattern 正則中的模式字串 repl 替換的字串,也可為乙個函式 string 要被查詢替換的原始字串 count 模式匹配後替換的最大次數,預設 0 表示替換所有的匹...