我正在努力將文本從文件解析到哈希中。正則表達式不是我的東西,我試圖更好地理解如何做這樣的事情。來自文本和括號的正則表達式鍵值
-some-
key1=value1
key2=value2
key3=value3
; comment
-something-
key4=value4
key5=value5
結果應該是這樣的
some.key1 = value1
some.key2 = value2
some.key3 = value3
something.key4 = value4
something.key5 = value5
我在Ruby的工作,我能捕捉到什麼破折號但雙換行符之間,和評論都扔我送行。目前我有類似這樣的東西,它可以找到破折號中的內容並將其放入組1中,然後填入組2中的下一行,但隨後停在那裏。
data = Hash[text.scan(/^\-(.*?)\-\s(.*?)$/m)]
任何幫助理解這將如何工作是非常感謝。
更新:通過兩種不同的正則表達式和一個循環來實現它。
但是必須有更高效的方法,對吧?
data = Hash.new
Hash[text.scan(/\-(.*?)\-\s([^\r\n]*(?:[\r\n]+(?!\-).*)*)/)].each do |key, value|
data[key] = Hash[value.scan(/(?<=\s|\A)([^\s=]+)\s*=\s*(.*?)(?=(?:\s[^\s=]+=|$))/m)]
end
puts data.inspect
您可以發佈您的解決方案並接受它。 –