我现在被困在一个正则表达式上好几天了。我需要捕获特定键的键值对的值。我的数据是这样的:
key1 = "value1",
key2 = "value2",
key3 = "value3",
key4 = "value4"
我想捕获key2和key4的值,可以有任意多个键值。它必须作为正则表达式完成,并在一个名为Splunk的工具中使用,该工具不支持/ g修饰符。这是我得到了多远:
(?:(?:key2 = "(.+)")|(?:key4 = "(.+)")) /g
(见http://regex101.com/r/yZ5tR9/1)
使用/ g它可以工作并捕获" value2"和" value4",就像我想要的那样,但是,如上所述/ g不可用。
如何在没有修饰符的情况下捕获两个k / v对?非常感谢!
答案 0 :(得分:1)
Here's an update你的正则表达式没有/g
修饰符:
(?:(?:key1 = "(.+)")(?:.|\n)*?(?:key3 = "(.+)"))
中央非捕获组仅意味着匹配第一个键/值对与第二个键/值对之间的任何内容,包括换行符