Jmeter關聯之正則表達式提取器


正則表達式簡介

  摘自網上的說法,正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種

邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串

的一種過濾邏輯。正則表達式是一種文本模式,該模式描述在搜索文本時要匹配的一個或多個字符串。

比較常用的基本正則字符

  "^" ^會匹配行或者字符串的起始位置,有時還會匹配整個文檔的起始位置。

  "$" $會匹配行或字符串的結尾。

  "\w"匹配字母,數字,下划線。

  例如我要匹配"a2345BCD__TTz" 正則:"\w+" 這里的"+"字符為一個量詞指重復的次數。

  "\s"匹配空格。

  例如字符 "a b c" 正則:"\w\s\w\s\w" 一個字符后跟一個空格,如有字符間有多個空格直接把"\s" 寫成 "\s+" 讓空格重復。

  "."匹配除了換行符以外的任何字符。

  "[abc]": 字符組,匹配包含括號內元素的字符。

  "*": 重復零次或更多(貪婪模式)

  例如"aaaaaaaa" 匹配字符串中所有的a 正則:"a*" 會出到所有的字符"a"

  "+": 重復一次或更多次(懶惰模式)

  例如"aaaaaaaa" 匹配字符串中所有的a正則:"a+"會取到字符中所有的a字符,"a+""a*"不同在於"+"至少是一次而"*" 可以是0次。

  "?": 重復零次或一次。

  例如"aaaaaaaa" 匹配字符串中的a 正則 "a?" 只會匹配一次,也就是結果只是單個字符a

  "{n}": 重復n次。

  例如從"aaaaaaaa" 匹配字符串的a 並重復3正則:"a{3}" 結果就是取到3a字符 "aaa"

  "{n,m}": 重復nm次。

  例如正則 "a{3,4}" a重復匹配3次或者4次;所以供匹配的字符可以是三個"aaa"也可以是四個"aaaa"正則都可以匹配到。

  "{n,}": 重復n次或更多次。

  與{n,m}不同之處就在於匹配的次數將沒有上限,但至少要重復n正則"a{3,}" a至少要重復3次。

  "*?": 重復任意次,但盡可能少重復。

  如 "acbacb" 正則"a.*?b" 只會取到第一個"acb" 原本可以全部取到但加了限定符后,只會匹配盡可能少的字符 ,而"acbacb"最少字符的結果就是"acb"

  "+?": 重復1次或更多次,但盡可能少重復。

  與上面一樣,只是至少要重復1次。

  "??": 重復0次或1次,但盡可能少重復。

  如 "aaacb" 正則 "a.??b"只會取到最后的三個字符"acb"

  "{n,m}?": 重復nm次,但盡可能少重復。

  如 "aaaaaaaa" 正則 "a{0,m}" 因為最少是0次所以取到結果為空

  以上就是正則表達式中最基礎的部分知識,也是比較常用的知識點,對於更加復雜部分的內容本文未涉及。其實看多了,慢慢就

知道是什么意思了,就和你一開始對Linux命令不熟悉一樣,用多了自然而然就記住了。

利用正則實現關聯

  

Name of created variable:引用名稱,下一個請求要引用的參數名稱,如填寫num,則可用${num}引用它

Regular Expression:正則表達式,填寫編寫的正則

Template:模板,用$$引用起來,如果在正則表達式中有多個正則表達式,則可以是$2$,$3$等等,表示解析提取第幾個值。如:$1$表示解析到的第1個值

Match No.:匹配數字,可以理解為匹配到結果所出現的次數,比如需要設置匹配數字為1,在JMeter中使用1來表示,通常情況下填0即可

Default Value:缺省值,如果參數沒有取到值,那默認給一個值讓它取

  測試場景,現在有接口A、接口B兩個接口,接口B需要從接口A中拿到參數“ID”作為自己的入參。此時,我們可以利用Jmeter中的

正則表達式提取器實現這一目標。

  配置Jmeter腳本如下,用Dummy Sampler模擬接口A,得到返回結果。

 

  添加正則表達式提取器(Regular Expression Extractor)並做如下配置:

 

  配置接口B,引用從接口A中提取的參數${id}

  最后,執行並查看結果,可以看到接口A返回結果中的id已經成功獲取,這里接口B的執行結果截圖省略了。

  其中會有個問題,就是我們怎么知道寫的正則表達式是否正確匹配了我們要的數據呢?最好的辦法當然是先驗證一下,省得跑到最后

才發現寫的正則有問題,這里給大家推薦一個在線驗證正則的工具:http://tool.oschina.net/regex。文筆不好,有錯誤的地方望大家多多指正。


免責聲明!

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



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