正規表示式詳解

2021-09-25 10:06:46 字數 3093 閱讀 3450

1. 匯入正規表示式

import re

2.正規表示式規則

2.1 單字元匹配    

規則                             功能

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

匹配中列舉的字元

\d                          匹配數字, 0-9

\d                          匹配非數字

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

\s                          匹配非空白符

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

\w                          匹配非單詞字元

2.2 匹配數量

規則                               功能

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

+                           匹配前乙個字元出現1次多次或無限次,至少得出現一次

?                         匹配前乙個字元出現1次或者0次,至多出現1次

匹配前乙個字元出現m次

匹配前乙個字元至少出現m次

匹配前乙個字元至少出現m次,至多出現n次

2.3 邊界條件

規則                               功能

^                            匹配字串開頭

$                           匹配字串結尾

\b                          匹配乙個單詞的邊界

\b                          匹配非單詞邊界

pattern = r"^\w+\s\b\world\b\s!$" 匹配hello world ! 但是不匹配helloworld !

2.4 匹配分組

規則                               功能

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

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

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

(?p)           分組起別名

(?p=name)             引用別名為name分組匹配到的字串

例子一:

匹配出0-100之間的數字

pattern = r"0$|100$|[1-9]\d$"

例子二:

匹配分組,獲取頁面中                                         #str=""  

測試一下re.groups(), re.group(), re.group(1)的區別

例子三分組引用,精確獲取多個標籤內的內容

pattern = r"<(.+)><(.+)>.*"                    #str="

"例子四

分組起別名

pattern = r"<(?p.+)><(?p.+)>(?p.*)"                    #str="

"3. 使用的方法

方法一:

re.match(pattern, string[, flags])

pattern:     匹配的正規表示式

string:        要匹配的字串

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

返回match物件:

使用group(), groups(), groupdict()獲取匹配表示式

group([group1, ... ]):獲取乙個或多個分組截獲的字串,指定多個引數時以元組形式返回,編號0代表整個匹配的子串;不填寫引數時,返回group(0),可以用別名也可以用編號。

沒有截獲字串的組返回none;截獲多次的組返回最後一次截獲的子串

groups(): 以元組形式返回全部分組截獲的字串

groupdict():返回以有別名的組的別名為鍵,以改組截獲的子串為值的字典。沒有別名的組不包含在內。

方法二:

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

pattern:        匹配的正規表示式

string:            要匹配的字元

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

re.search()方法掃瞄整個字串,並返回第乙個成功的匹配,如果匹配失敗,則返回none

與re.match()方法不同,re.match()方法要求必須從字串的開頭進行匹配,如果字串的開頭不匹配,整個匹配就失敗了;re.search()並不要求必須從字串的開頭進行匹配

方法三:

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

pattern:                    正規表示式

repl:                            被替換的內容

string:                        正規表示式匹配的內容

count:                        正規表示式匹配的結果是多個,使用count來限定替換的個數從左向右,預設值是0,替換所有的匹配到的結果

flags:                        匹配模式,可以使用按位或者「|」標識同時生效。

方法四:

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

re.findall()在字串中找到正規表示式所匹配的所有子串,並返回乙個列表;如果沒有找到匹配的,則返回空列表;

方法五:

re.split(pattern, string, maxsplit=0)

正規表示式詳解

正規表示式 基本正規表示式主要用於grep,egrep,vi,sed,awk命令中進行字串匹配。符號 意義 c 匹配字母c 匹配任意單個字元 匹配前乙個字元出現零次或多次 匹配任意多個任意字元 匹配集合中的任意單個字元,括號中為乙個集合 x y 匹配連續的字串範圍 匹配字串的開頭 匹配字串的結尾 匹...

正規表示式詳解

正規表示式主要作用 分割 匹配 查詢 替換 正規表示式中包括的元素 1.原子 普通字元 a z a z 0 9 原子表 轉義字元 2.元字元 有特殊功能的字元 3.修正模式符 系統內建部分字元,例如 i m s u 原子 1.a z a z 0 9 最常見的字元 2.abc 用圓括號包含起來的單元符...

正規表示式詳解

正規表示式 regular expression 又稱正規表示式 規則表示式等,是電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列匹配某個句法規則的字串,也通常用來檢索 替換那些匹配某個模式的文字。下面從以下方面開始講述正規表示式在python中的應用。1.在python中使用,首先需要...