python中正則表達式的使用


前言:

我們在做接口自動化的時候,處理接口依賴的相關數據時,通常會使用正則表達式來進行提取相關的數據,今天在這邊和大家聊聊如何在python中使用正則表達式。在python使用正則表達式,可以使用官方庫re來實現

一、re模塊的使用

python中使用正則表達式,需要用到re模塊來進行操作,這邊給大家介紹幾個re模塊中常用的方法。

1、re.match函數

參數說明:接收兩個參數,

  • 第一個是匹配的規則,
  • 第二個是匹配的目標字符串,

re.match嘗試從字符串的起始位置匹配一個模式,匹配成功 返回的是一個匹配對象(這個對象包含了我們匹配的信息),如果不是起始位置匹配成功的話,match()返回的就是空。

案例:

 

 

2、re.search方法

參數說明:接收兩個參數,

  • 第一個是匹配的規則,
  • 第二個是匹配的目標字符串,

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

案例:

 

 re.match與re.search的區別

  • re.match從字符串的開始位置進行匹配,如果字符串開始不符合正則表達式,則匹配失敗,函數返回空;
  • re.search匹配整個字符串,直到找到一個匹配成功的則進行返回,如果整個字符串中都沒有找到匹配成功的,則返回空

3、findall方法

參數說明:接收兩個參數,

  • 第一個是匹配的規則,
  • 第二個是匹配的目標字符串,

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

案例:

 

 

 注意: match 和 search 是匹配一個結果, findall 匹配處所有符合規則的結果。

4、sub方法

替換字符串中的某些字符,可以用正則表達式來匹配被選子串。

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

參數:
  • pattern:匹配的規則;
  • repl:匹配之后替換的新內容;
  • string:需要按規則替換的字符串;
  • count:替換的次數,可以不傳參,默認替換所有符合規則的。
案例:

 5、貪婪模式說明:

貪婪模式:Python里數量詞默認是貪婪的,總是嘗試匹配盡可能多的字符;

如下案例:有一個字符串s,我們需要在字符串中匹配3個以上的數字,字符串中數字有8個,貪婪模式會盡可能匹配更多字符,3個以上,8個也是3個以上,那么這里匹配的結果就是8個數字。

 

 

非貪婪模式:總是嘗試匹配盡可能少的字符,在"*","?","+","{m,n}",{m,}后面加上?,可以關閉貪婪模式

關閉貪婪模式之后,盡可能獲取更少的,如下,只獲取到最前面的3個數值(規則時至少3個,非貪婪就是匹配最前面符合規則的3個數組)

 

關於re模塊,更多的使用方法,本文不做過多的介紹,大家自行研究,謝謝!下面附上正則表達式的基本的匹配供大家參考

二、正則表達式語法

1、表示單字符

單字符:即表示一個單獨的字符,比如匹配數字用\d ,匹配非數字使用\D,具體規則如下:

字符

功能

.

匹配任意1個字符(\n除外)

[7a ]

匹配[ ]中列舉的字符,這里就是匹配7或者a這兩個字符其中的一個

\d

匹配數字,即0-9

\D

匹配非數字,即不是數字

\s

匹配空白,即 空格,tab鍵

\S

匹配非空白

\w

匹配單詞字符,即a-z、A-Z、0-9、_

\W

匹配非單詞字符

2、表示數量

如果要匹配某個字符多次,就可以在字符后面加上數量進行表示,具體規則如下:

字符

功能

*

匹配前一個字符出現0次或者無限次,即可有可無

+

匹配前一個字符出現1次或者無限次,即至少有1次

?

匹配前一個字符出現1次或者0次,即要么有1次,要么沒有

{m}

匹配前一個字符出現m次

{m,}

匹配前一個字符至少出現m次

{m,n}

匹配前一個字符出現從m到n次

3、表示邊界

用來表示字符串或者單詞的邊界 如字符串開頭,單詞開頭等

字符

功能

^

匹配字符串開頭

$

匹配字符串結尾

\b

匹配單詞的邊界

\B

匹配非單詞邊界

4、匹配分組

對匹配的內容做分組處理

字符

功能

(aaa)

將括號中字符作為一個分組

\number

引用分組number匹配到的字符串

(?P<g1>)

分組起別名為g1

(?P=g1)

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM