2014-10-01 41 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