我正在尝试为我的rails论坛创建一个BBcode代码标签,但我的表达式有一个问题:
param_string.gsub!( /\[code\](.*?)\[\/code\]/im, '<pre>\1</pre>' )如何获取正则表达式匹配返回的内容( code标记之间的文本),并对其中的所有html和其他字符进行转义?
我试过了:
param_string.gsub!( /\[code\](.*?)\[\/code\]/im, '<pre>' + my_escape_function('\1') + '</pre>' )但它并没有起作用。它只是将"\1“作为字符串传递给函数。
发布于 2010-01-19 22:32:18
您应该注意正则表达式的贪婪行为。因此,正确的代码如下所示:
html.gsub!(/\[(\S*?)\](.*?)\[\/\1\]/) { |m| escape_method($1, $2) }然后,escape_method如下所示:
def escape_method( type, string )
case type.downcase
when 'code'
"<pre>#{string}</pre>"
when 'bold'
"<b>#{string}</b>"
else
string
end
end发布于 2010-01-03 00:19:28
有人在这里发布了答案,但他们已经删除了。
我试过他们的建议,只做了一点小小的改动就行了。无论您是谁,谢谢!:)
就是这里
param_string.gsub!( /\[code\](.*?)\[\/code\]/im ) {|s| '<pre>' + my_escape_function(s) + '</pre>' }发布于 2010-01-03 13:02:41
您可以简单地使用"<pre>#{$1}</pre>"作为您的替换值。
https://stackoverflow.com/questions/1991945
复制相似问题