我正在用ruby寫博客歸檔轉換器。爲了將wordpress文章內容轉換爲html格式,我必須實現wordpress的wpautop()函數。如何在ruby1.8中重寫正則表達式(?<!...)。(重新實現wpautop函數)
原始wpautop()函數:http://pastebin.com/BzV8bXxQ
我的紅寶石實現:https://github.com/chloerei/blog_converter/blob/master/lib/blog_converter/adaptor/wordpress.rb,看Wordpress#wpautop_filter
它做工精細的ruby1.9.2,BU在1.8.7,它拋出一個錯誤
blog_converter/lib/blog_converter/adaptor/wordpress.rb:147: undefined (?...) sequence: /(?<!<br \/>)\s*\n/
來源
// In php
$pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
# In ruby
string.gsub!(%r|(?<!<br />)\s*\n|, "<br />\n") # optionally make line breaks
經過一番搜索之後,我發現ruby1.8.7沒有新的正則表達式引擎'Oniguruma',它不支持新的正則表達式語法。
所以我想我有兩個辦法:
- 添加依賴 'oniguruma' 舊語法使用Ruby 1.9.0 <
- 重寫
/(?<!<br \/>)\s*\n/
當
哪種方式更好?以及如何重寫這個正則表達式?
謝謝你,把我的簡單的單元測試。 – Rei 2010-12-06 06:30:23