0

当我看到一些与我的模式匹配的文本时,我想使用 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,这样我就可以获得以下内容?如果没有,最好的方法是什么?

4

1 回答 1

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)}
于 2013-06-02T21:58:26.413 回答