【问题标题】:Regular Expression Jmeter, making rightmost match according to left boundry value正则表达式Jmeter,根据左边界值进行最右匹配
【发布时间】:2018-03-13 19:26:18
【问题描述】:

我正在尝试使用正则表达式在 Jmeter 中进行关联。 我的情况是:

GUID=1232, awsdqdwe click1 ,GUID=21232 berttt click2, b, GUID=323223,babsjbcjhbcc click3

在这里我希望捕捉点击 3 值的 GUID,它是数字形式,忽略所有字母文本 正则表达式:GUID=(.*?)(?#text)click3

但是这个正则表达式采用最左边的 GUID 。如何让它从最右边的边界匹配中查找第一个 GUID?

【问题讨论】:

标签: java regex jmeter


【解决方案1】:

试试下面的,

String input ="GUID=1232, awsdqdwe click1 ,GUID=21232 berttt click2, b, GUID=323223,babsjbcjhbcc click3"; 
Pattern click3IdPatttern = Pattern.compile("(?<=GUID[=])\\d+(?=[a-zA-Z ,]+?(click3))");
Matcher matcher = click3IdPatttern.Matcher(input);
String id = matcher.find() ? matcher.group() : "";

在我的正则表达式 "(?&lt;=GUID[=])\\d+(?=[a-zA-Z ,]+?(click3))" 中,我使用正向前瞻和后向。

【讨论】:

  • 保持简单:GUID=(\\d+),? ?(\\w+) click3
  • @AniketSahrawat ,保持简单是一回事。但是可读性和保持正则表达式的通用性同样重要。我们不需要捕获 GUID 和 click3,这就是我使用前瞻和后视的原因。
  • 这就是我们使用组的原因。顺便说一句,如果您谈论可读性,我认为我建议的正则表达式更具可读性。
【解决方案2】:

相关的正则表达式类似于:

 GUID=(\d+),.*click3

演示:

参考资料:

【讨论】:

  • 嗨,我使用的和建议的一样,但我得到的值是 1232。我也按照你给出的截图运行,但我又得到 1232。你能帮忙
  • 很可能您需要在 GUID 之前添加空格
猜你喜欢
  • 2015-11-16
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
相关资源
最近更新 更多