当我看到一些与我的模式匹配的文本时,我想使用具有查询链接的RedCloth创建指向外部网站的链接。
如果我有类似的话:
Text 123 1234 12345
当我看到我想用以下内容替换它时:
"Text 123 1234 12345":http://site.com/query?value=Text%20123%201234%2012345
如果我让它保留空格,RedCloth将不会正确地注意到这一点。
我在这里:
s = "this is a string which has Text 123 1234 12345 "
s = s.s.gsub(/(Text \d+ \d+ \d+)/,'"\1":http://site.com/query?value=\1'
=> "Text 123 1234 12345":http://site.com/query?value=Text 123 1234 12345"
探测器是RedCloth在:
之后停止解析 "Text 123 1234 12345":http://site.com/query?value=Text
所以我真的需要:
"Text 123 1234 12345":http://site.com/query?value=Text%20123%201234%2012345"
我是否有办法在\1
的右侧混淆gsub
,以便我可以获得以下内容?如果没有,最好的方法是什么?
答案 0 :(得分:1)
好的,感谢Narfanator的评论,我发现了以下内容:“$1 and \1 in Ruby”。
解决方案非常简单:
s = "this is a string which has Text 123 1234 12345 "
s = s.s.gsub(/(Text \d+ \d+ \d+)/){|x| "\"" + x + "\":https://site.com/query?value=" + CGI::escape(x)}