06 資料提取 正規表示式

2022-09-24 12:30:13 字數 2350 閱讀 7661

在前面我們已經搞定了怎樣獲取頁面的內容,不過還差一步,這麼多雜亂的**夾雜文字我們怎樣把它提取出來整理呢?下面就開始介紹乙個十分強大的工具,正規表示式!

正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。

正規表示式是用來匹配字串非常強大的工具,在其他程式語言中同樣有正規表示式的概念,python同樣不例外,利用了正規表示式,我們想要從返回的頁面內容提取出我們想要的內容就易如反掌了

規則

模式描述

$匹配字串的末尾

.匹配任意字元,除了換行符,當re.dotall標記被指定時,則可以匹配包括換行符的任意字元

[...]

用來表示一組字元,單獨列出:[amk] 匹配 'a','m'或'k'

[^...]

不在中的字元:[^abc] 匹配除了a,b,c之外的字元

re*匹配0個或多個的表示式

^匹配字串的開頭

re+匹配1個或多個的表示式

re?匹配0個或1個由前面的正規表示式定義的片段,非貪婪方式

rere

精確匹配n個前面表示式

re匹配 n 到 m 次由前面的正規表示式定義的片段,貪婪方式ab

(re)

g匹配括號內的表示式,也表示乙個組

(?-imx)

正規表示式關閉 i, m, 或 x 可選標誌。只影響括號中的區域

(?imx)

正規表示式包含三種可選標誌:i, m, 或 x 。只影響括號中的區域

(?: re)

類似 (...), 但是不表示乙個組

(?imx: re)

在括號中使用i, m, 或 x 可選標誌

(?-imx: re)

在括號中不使用i, m, 或 x 可選標誌

(?#...)

注釋(?= re)

前向肯定界定符。如果所含正規表示式,以 ... 表示,在當前位置成功匹配時成功,否則失敗。但一旦所含表示式已經嘗試,匹配引擎根本沒有提高;模式的剩餘部分還要嘗試界定符的右邊。

(?! re)

前向否定界定符。與肯定界定符相反;當所含表示式不能在字串當前位置匹配時成功

(?> re)

匹配的獨立模式,省去回溯

\w匹配字母數字及下劃線

\w匹配非字母數字及下劃線

\s匹配任意空白字元,等價於 [\t\n\r\f].

\s匹配任意非空字元

\d匹配任意數字,等價於 [0-9]

\d匹配任意非數字

\a匹配字串開始

\z匹配字串結束,如果是存在換行,只匹配到換行前的結束字串。c

\z匹配字串結束

\g匹配最後匹配完成的位置

\b匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'

\b匹配非單詞邊界。'er\b' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'

\n, \t, 等.

匹配乙個換行符。匹配乙個製表符。等

\1...\9

匹配第n個分組的內容

\10匹配第n個分組的內容,如果它經匹配。否則指的是八進位制字元碼的表示式

[\u4e00-\u9fa5]

中文2.1 數量詞的貪婪模式與非貪婪模式

正規表示式通常用於在文字中查詢匹配的字串

python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配盡可能多的字元;非貪婪的則相反,總是嘗試匹配盡可能少的字元

例如:正規表示式」ab」如果用於查詢」abbbc」,將找到」abbb」。而如果使用非貪婪的數量詞」ab?」,將找到」a」

2.2 常用方法

re.search

re.sub

re.findall

正規表示式可以包含一些可選標誌修飾符來控制匹配的模式。修飾符被指定為乙個可選的標誌。多個標誌可以通過按位 or(|) 它們來指定。如 re.i | re.m 被設定成 i 和 m 標誌:

修飾符

描述re.i

使匹配對大小寫不敏感

re.l

做本地化識別(locale-aware)匹配

re.m

re.s

使 . 匹配包括換行在內的所有字元

re.u

根據unicode字符集解析字元。這個標誌影響 \w, \w, \b, \b

re.x

該標誌通過給予你更靈活的格式以便你將正規表示式寫得更易於理解

jmeter 正規表示式提取

我們在做壓測時,經常會碰到需要上個介面的結果作為引數傳遞到下乙個介面,此時需要用到正規表示式提取功能。1 新增jmeter正規表示式提取器 在具體的request下新增jmeter正規表示式提取器 jmeter正規表示式在 後置處理器 下面 例1如下 引用名稱 tokenid 自己定義 模板 1 匹...

正規表示式提取時間

時間的各種格式都可以通過正規表示式來匹配,例如我們想精確匹配hh mm的時間,即包含小時和分鐘,可以使用下面的表示式 0 9 0 0 9 1 0 9 2 0 3 0 5 0 9 0 9 0 0 9 1 0 9 2 0 3 0 5 0 9 更多關於時間和日期的正規表示式,參考 regexlib.pub...

jmeter正規表示式提取器裡正規表示式語法簡介

jmeter裡介面請求結束後,如果後續介面請求想要獲取本次返回結果的內容,就需要正規表示式提取器來獲取引數,當然也可以用json path extractor來提取 這個簡單一些 不過jmeter裡很多地方的約束條件和斷言都是需要正規表示式來匹配的,所以大家還是要學習一下正規表示式的語法,以便更好更...