使用Ruby我想要帶一個Regexp對象(或一個表示有效正則表達式的字符串;您的選擇)並標記它以便我可以操縱某些部分。Tokenize(lex?parse?)正則表達式
具體而言,我想帶一個正則表達式/串是這樣的:
regex = /var (\w+) = '([^']+)';/
parts = ["foo","bar"]
和創建替換字符串,從陣列替換爲字面每個捕獲:
"var foo = 'bar';"
甲天真的基於正則表達式的解析正則表達式的方法,例如:
i = -1
result = regex.source.gsub(/\([^)]+\)/){ parts[i+=1] }
...會失敗例如嵌套的捕獲組或非捕獲組,或者在字符類中包含括號的正則表達式。因此,我希望將正則表達式分解成語義上有效的片斷。
是否有一個現有的正則表達式解析器可用於Ruby?有一個(恐怖恐怖)已知的正則表達式,完全匹配正則表達式嗎?有沒有我找不到的寶石?
這個問題的動機是希望找到一個乾淨,簡單的答案this question。
一個有趣的問題。正則表達式是否是正則表達式? –
@ acheong87鑑於任意嵌套的捕獲組,我認爲不是。然而,我對常規語言的形式主義的瞭解非常有限。 – Phrogz
你看過正則表達式變量插值嗎? – iain