找到&替换RegEx

时间:2014-09-01 16:01:04

标签: ruby-on-rails ruby regex

我有一个文本字段,我需要找到以#hashtag开头的每个关键字(可以有多个关键字),并将其替换为已存在的对象的链接(如果存在)。

所以我必须在主题标签上做find,如果存在则用链接替换它。

#goofy如果存在,则应替换为http://www.test.com/i/goofy

RegEx:/(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/i

最好的方法是什么?

我坚持如何用链接替换我找到的每个关键字实例。

1 个答案:

答案 0 :(得分:1)

您可以使用String#gsub

re = /(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/i

"#goofy".gsub(re, 'http://www.test.com/i/\1')
#=> "http://www.test.com/i/goofy"

\1指的是第一个捕获组。

但是你的正则表达式似乎有问题:

"123 #goofy".gsub(re, 'http://www.test.com/i/\1')
#=> "123http://www.test.com/i/goofy"
#       ^ no whitespace