2014-12-03 55 views
1

我想提取由JMeter中分隔的正則表達式提取器中的破折號' - '分隔的以下序列代碼的每個部分。REGEX的值提取 - JMeter

串行代碼:cdaf57ce-1a50-42fc-b548-2c84ad7911a8

預期的結果是:

Regular Expression Extractor 1: cdaf57ce 
Regular Expression Extractor 2: 1a50 
Regular Expression Extractor 3: 42fc 
Regular Expression Extractor 4: b548 
Regular Expression Extractor 5: 2c84ad7911a8 

我想每個以下的正則表達式:

Regular Expression Extractor 1: (\w{8})- 
Regular Expression Extractor 2: [^(\w{8})]-(\w{4})-[^(\w{4})]-[^(\w{4})]-[^(\w{12})] 
Regular Expression Extractor 3: [^(\w{8})]-[^(\w{4})]-(\w{4})-[^(\w{4})]-[^(\w{12})] 
Regular Expression Extractor 4: [^(\w{8})]-[^(\w{4})]-[^(\w{4})]-(\w{4})-[^(\w{12})] 
Regular Expression Extractor 5: -(\w{12}) 

第一和最後的正常工作,但其他人沒有。

感謝

回答

1

一個簡單的正則表達式,如:

([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12}) 

應該很好地工作 - 和各個部件可以從匹配中所捕獲的基團而獲得。

如果必須使用單獨的正則表達式的每個部分,那麼你就需要做一些像

  1. \b[0-9a-f]{8}
  2. (?<=[0-9a-f]{8}-)[0-9a-f]{4}
  3. (?<=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-)[0-9a-f]{4}
  4. (?<=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-)[0-9a-f]{12}

這是使用lookbehind,它不是最有效的構造(並且在所有正則表達式引擎中都不支持),但應該可以工作。\ b會與一個單詞邊界

向前看符號是另一種方式 - 並且可以更好地:

  1. [0-9a-f]{8}(?=-)
  2. [0-9a-f]{4}(?=-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b)
  3. [0-9a-f]{4}(?=-[0-9a-f]{4}-[0-9a-f]{12}\b)
  4. [0-9a-f]{4}(?=-[0-9a-f]{12}\b)
  5. [0-9a-f]{12}\b
3

正則表達式提取可作爲,

enter image description here

user_variables_g1 = cdaf57ce 
user_variables_g2 = 1a50 
user_variables_g3 = 42fc 
user_variables_g4 = b548 
user_variables_g5 = 2c84ad7911a8 

+0

謝謝Nachiket,它工作得很好 – 2014-12-04 08:07:56

+0

請接受&如果有幫助,請提出答案 – 2014-12-04 08:26:43

1

您是否使用一個字段,以驗證該串行代碼試試這個簡單的正則表達式的輸出:

^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$ 

比賽:

cdaf57ce-1a50-42fc-b548-2c84ad7911a8

CDAF57CE-1A50-42FC-B548-2C84AD7911A8

12asCda1-23ON-324F-Bse3-htskjas1234q