2014-12-03 70 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