2014-10-01 139 views
0

现在,我被困在正则表达式中。我需要捕获特定键的键值对的值。我的数据是这样的:正则表达式捕获特定键的键值对

key1 = "value1", 
key2 = "value2", 
key3 = "value3", 
key4 = "value4" 

我想捕获key2和key4的值,可以有任意多个键值。它必须作为一个正则表达式来使用,并用于名为Splunk的工具中,该工具不支持/ g修饰符。这是我迄今为止得到:

(?:(?:key2 = "(.+)")|(?:key4 = "(.+)")) /g 

(见http://regex101.com/r/yZ5tR9/1

与/ g的它的工作原理,并捕获“值2”和“值4”,就像我想它,但是,因为说/ g不可用。

任何想法如何捕获两个K/V对没有修饰符?非常感谢!

回答

1

Here's an update你的正则表达式,如果没有/g修改作品:

(?:(?:key1 = "(.+)")(?:.|\n)*?(?:key3 = "(.+)")) 

中央非捕获组只是意味着匹配任何东西,包括换行,第一个键/值对和第二键/值对之间

+0

哦,太棒了,这正是我需要的!谢谢 – Christian 2014-10-01 07:50:18

+0

@Christian请注意,这是在一场比赛中完成的,而不是重复匹配 - 但如果你没有使用'/ g' – 2014-10-01 07:51:53

+0

这就是你不得不做的事情 – Christian 2014-10-01 07:54:27