正则表达式用于灵活的键/值对

时间:2017-02-17 14:30:20

标签: ruby regex

我正在寻找比通用解决方案更具体的东西而且被卡住了。正则表达式适用于我们的logstash'我认为JRuby符合Ruby 1.9.3。

http://regexr.com/3fas9 - 示例正则表达式沙箱

  [\w\d]+\s*=\s*.+?(?=$|[ ,]+[\w\d]+\s*=)

在没有引用并捕获最后一个键/值对时,无法确保只捕获一个单词。感谢您开始使用mudasobwa。

示例输入

  c.k.a.e.s.impl.TestImpl - EventServiceImpl.something - event k1 = 4060936, k2 = 563486, kdod = 5882fe842bf9a9afd9611012 ssfk4=1,k5="two words" sk6=one word k7="int,comma" extra value

预期匹配输出

k1 = 4060936
k2= 563486
kdod = 5882fe842bf9a9afd9611012
ssfk4=1
k5=two words
sk6=one
k7=int,comma

奖励挑战输出如果空格是等于可以由正则表达式按摩。如果没有,我可以发布流程,这很好。

k1=4060936
k2=563486
kdod=5882fe842bf9a9afd9611012
ssfk4=1
k5=two words
sk6=one
k7=int,comma

1 个答案:

答案 0 :(得分:1)

([\w\d]+)\s*=\s*(?:"([^"]+?)"|([\w\d]+))

标志:Ignore-Whitespace,Global

:第1组,:第2组或第3组