第四十三次總結 正規表示式(一),re的高階用法

2021-09-22 20:02:09 字數 2185 閱讀 2486

它是乙個通用的乙個表示式

可以適用於任何程式語言

匯入模組後使用

在上一小節中,了解到通過re模組能夠完成使用正規表示式來匹配字串

本小節,將要講解正規表示式的單字元匹配

字元功能

.匹配任意1個字元(除了\n)

[ ]匹配[ ]中列舉的字元

\d匹配數字,即0-9

\d匹配非數字,即不是數字

\s匹配空白,即 空格,tab鍵

\s匹配非空白

\w匹配單詞字元,即a-z、a-z、0-9、_

\w匹配非單詞字元

匹配多個字元的相關格式

字元功能

*匹配前乙個字元出現0次或者無限次,即可有可無

+匹配前乙個字元出現1次或者無限次,即至少有1次

?匹配前乙個字元出現1次或者0次,即要麼有1次,要麼沒有

匹配前乙個字元出現m次

匹配前乙個字元出現從m到n次

匹配多個,需要與匹配單個的符號相配合來使用

字元功能

^匹配字串開頭

$匹配字串結尾

字元功能

|匹配左右任意乙個表示式

(ab)

將括號中字元作為乙個分組

\num引用分組num匹配到的字串

(?p)分組起別名

(?p=name)

引用別名為name分組匹配到的字串

給分組起名字

(?p《名字》)
在正則式中獲取之前的起名了的小組的資料

(?p=名字)
#coding=utf-8

import re

​ret = re.search(r"\d+", "閱讀次數為 9999")

ret.group()

執行結果:

'9999'
與match的區別

match是從頭開始匹配

search可以從整個字串是進行搜尋

#coding=utf-8

import re

​ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")

print(ret)

執行結果:

['9999', '7890', '12345']
方法1:

#coding=utf-8

import re

​ret = re.sub(r"\d+", '998', "python = 997")

print(ret)

執行結果:

python = 998
小結

re.sub(正則式,替換為什麼內容,字串)
方法2:

#coding=utf-8

import re

​def add(temp):

strnum = temp.group()

num = int(strnum) + 1

return str(num)

​ret = re.sub(r"\d+", add, "python = 997")

print(ret)

​ret = re.sub(r"\d+", add, "python = 99")

print(ret)

執行結果:

python = 998

python = 100

小結

re.sub(正則式,函式名,字串)

匹配成功的內容會作為函式執行時的實參,函式返回的內容會對匹配好的內容進行乙個替換

需求:切割字串「info:xiaozhang 33 shandong」

#coding=utf-8

import re

​ret = re.split(r":| ","info:xiaozhang 33 shandong")

print(ret)

執行結果:

['info', 'xiaozhang', '33', 'shandong']

正規表示式總結 (一)

要使用這些字元做文字字元是需要用反斜槓 進行轉義。例如 匹配1 1 2的正規表示式為 1 1 2 字符集由方括號 括起,告訴正規表示式引擎匹配集合中的單個字元,可以使用連字元 定義乙個字元範圍 a za z0 9 在左方括號 後邊緊跟乙個尖括號 對字符集取反 a za z1 9 匹配數字字母以外的任...

Python標準庫 re 正規表示式 一

python標準庫 re 正規表示式 作用 使用形式化模式搜尋和修改文字。python 版本 1.5 及以後版本 正規表示式 regular expression 是用一種形式化語法描述的文字匹配模式。模式被解釋為一組命令,以乙個字串作為輸入,生成乙個匹配的子集或原字串的修改版本。正規表示式 一詞在...

Python中re 正規表示式 常用函式總結

1 re.match 嘗試從字串的開始匹配乙個模式 re.match的函式原型為 re.match pattern,string,flags 第乙個引數是正規表示式,如果匹配成功,則返回乙個match,否則返回乙個none 第二個引數表示要匹配的字串 第三個引數是標緻位,用於控制正規表示式的匹配方式...