有人能解释一下在使用coderay时这个语法是什么$3和$2吗?
http://railscasts.com/episodes/207-syntax-highlighting?view=comments
require 'coderay'
def coderay(text)
text.gsub(/\<code( lang="(.+?)")?\>(.+?)\<\/code\>/m) do
content_tag("notextile", CodeRay.scan($3, $2).div(:css => :class))
end
end我也见过$4。这些定义是在哪里定义的,它们引用了什么,是否有相关的文档?
我甚至不知道该问些什么问题。基本上..。他们是什么?我必须明白。
发布于 2014-10-27 01:58:39
它们是由gsub创建的,称为“捕获”。它们将具有正则表达式中由括号匹配的内容。在您的示例中,$1将匹配lang="(.+?)",$2将匹配lang属性中的.+?,而$3将匹配其他.+? (标记内容)。更确切地说,$1是一个特殊的全局变量,它将与Regexp.last_match[1]相同,而后者又与Regexp.last_match.captures[0]相同。其他人也一样。
您可以在 documentation中找到与Regexp相关的特殊全局变量引用。
它与CodeRay/RedCloth无关,与正则表达式和核心Ruby无关。
https://stackoverflow.com/questions/26580111
复制相似问题