替换为使用正则表达式结果

时间:2012-07-20 19:37:35

标签: ruby regex

我们说我有一些带有几个标签的文字:

[twitter:jpunt]

我想将这些替换成这样的东西:

<a href="http://twitter.com/jpunt">@Jpunt</a>

我怎么能在Ruby中这样做?我已经研究了几个小时的正则表达式,结果很沮丧。任何人吗?

2 个答案:

答案 0 :(得分:1)

这应该做的工作:

initial = "[twitter:jpunt]"
link = initial.gsub(/\[twitter:(\w+)\]/i, '<a href="http://twitter.com/\1">@\1</a>')

答案 1 :(得分:0)

这是一行代码(点击here来测试此代码)&gt;&gt;

output = input.gsub(/\[([^:]+):([^\]]+)\]/) {
  '<a href="http://' + $1 + '.com/' + $2 + '">@' + $2.capitalize + '</a>' }

以上代码适用于任何标记名称。如果您只想要 twitter ,那么请进行修改:

output = input.gsub(/\[twitter:([^\]]+)\]/) {
  '<a href="http://twitter.com/' + $1 + '">@' + $1.capitalize + '</a>' }