2017-08-03 105 views
-1

我試圖捕獲鍵值對的值。例如在下面的例子中,我想要捕獲值「foo」和「bar」。正則表達式來捕獲鍵值對的值

Ex。節點= FOO類型=欄

+0

你不能在一個單一的正則表達式捕獲多個值this網站很有幫助。您需要使用循環捕獲每個鍵值對。這些細節取決於您使用的編程語言。 – Barmar

+0

所以我意識到,如果我知道鑰匙,它變得更容易。其實我試圖找出一個日誌解析器的格式,所以只是使用正則表達式。 – Brandon

+0

已經有很多日誌解析器已經寫好了。 – Barmar

回答

0

有關由正則表達式捕獲特定字符串的一般理解,可以認爲以下模式:富=酒吧

(.*[^=])=(.*) 

FOO將被第一匹配括號組(匹配的一切,是不是一個「=」是指前「=」停止)

=將由「=」直接

被匹配

bar將與第二組匹配(其他所有內容直到行尾)

如果你的配對存儲在一對單獨的行中。 這只是試圖解釋一下如何捕捉工作。

爲您具體的例子:節點= FOO類型=欄

.*[^=]=(.*[^ ]) .*[^=]=(.*[^ ]) 

第一個括號組匹配,第二個

要知道,對於實施正則表達式庫可能會有所不同,並且在各種語言中也會略有不同, php,java,C++等。

有幾個在線正則表達式測試人員可以使用,

https://regex101.com/

+0

這將捕獲'node'和'foo',而不是'foo'和'bar'。 – Barmar

+0

他只是想抓住價值,而不是鑰匙。 – Barmar

0

^.+=(.*)將捕獲你的榜樣foobar

我找到建築/測試正則表達式模式