我使用CodeRay進行語法高亮顯示,但是我遇到了這個正則表達式的問題。文本將是這樣的:Ruby:嵌套的正則表達式和字符串替換
<pre><code>:::ruby
def say_hello
puts 'hello!'
end
</code></pre>
這一部分::::ruby
會告訴CodeRay該語言編寫的代碼塊應該被解釋爲(但它需要選配)。因此,這裏是我到目前爲止有:
def coderay(text)
text.gsub(/\<pre\>\<code\>(.+?)\<\/code\>\<\/pre\>/m) do
CodeRay.scan($2, $3).div()
end
end
$2
包含了我的格式(包括說哪種語言給它格式化線)的代碼,但我需要提取第一行,以便我可以通過它作爲scan()
的第二個參數,或者如果未找到該語言行,則將其傳遞給默認參數。我怎樣才能做到這一點?
您使用的是Ruby 1.8還是1.9? – outis 2010-10-25 03:01:08
任一。這有什麼不同嗎? – Andrew 2010-10-25 03:25:44
Ruby 1.9中的RE支持命名組。另外,你是否僅僅希望Ruby成爲默認的語言,或者你是否想要一種更復雜的方式來確定將代碼解釋爲什麼語言? – outis 2010-10-25 03:43:04