正则表达式匹配多组文本

时间:2011-06-08 00:31:56

标签: regex perl jmeter

我不确定这在Regex中是否可行,但我想要类似......

输入:

a="abc1"
...some stuff...
a="def1"
...some stuff...
a="ghi1"
...some stuff...
b="123a"
...some stuff...
a="abc2"
...some stuff...
a="def2"
...some stuff...
a="ghi2"
...some stuff...
b="123b"
...some stuff...
a="abc3"
...some stuff...
a="def3"
...some stuff...
a="ghi3"
...some stuff...
b="123c"
...some stuff...

想:

match_1 = 123a
match_1_1 = abc1
match_1_2 = def1
match_1_3 = ghi1

match_2 = 123b
match_2_1 = abc2
match_2_2 = def2
etc.

尝试:

a="([^"]+)"[\D\W\S]+b="([^"]+)"

这将获得每个部分的第一个“a = abc ...”和“b = 123 ......”,但不会将“def ...”组合在一起。

正则表达式的味道是JMeter中的那个,我相信它是Perl。

感谢任何建议或评论, :)

1 个答案:

答案 0 :(得分:1)

这是否适合您的需要?

(?:a="([^"]+)".*?)(?:a="([^"]+)".*?)(?:a="([^"]+)".*?)b="([^"]+)"

你可以看到它here on Regexr

这些组按照它们在输入中的显示顺序排列

  

第1组= abc1
  第2组= def1
  第3组= ghi1
  第4组= 123a

您需要打开\ s(dotall)修饰符,以便.匹配换行符。 (?:)是非捕获组。