我正在ruby中写一个博客档案转换器。为了将wordpress帖子内容转换为html格式,我必须实现wordpress的wpautop()函数。
原始wpautop()函数:http://pastebin.com/BzV8bXxQ
我的ruby工具:https://github.com/chloerei/blog_converter/blob/master/lib/blog_converter/adaptor/wordpress.rb,请参阅Wordpress#wpautop_filter
在ruby1.9.2中运行正常,在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没有新的regexp引擎'Oniguruma',它不支持新的regexp语法。
所以我认为我有两种方式:
/(?<!<br \/>)\s*\n/
哪种方式更好?以及如何重写此正则表达式?
答案 0 :(得分:3)
如果不能正常工作,你可以这样断言(注意! - 未经测试 - 我没有1.8):
string.gsub!(%r|(<br />)?\s*\n|, "<br />\n")
答案 1 :(得分:3)
试试这个.gsub!(%r|(<br />)?\s*\n|, "<br />\n")