ruby - 在ruby正则表达式中以@符号开头的单词之间插入html标签

标签 ruby regex

    link = "http://github.com/"
    message = "Hi @freedom and @cake please review my commit."

    expected = "Hi <a href='http://github.com/freedom'>@freedom</a> and <a href='http://github.com/cake'>@cake</a> please review my commit."

如何使用 linkmessage 值实现上面的 expected 字符串?

到目前为止,我可以将不带 @ 符号的 username 提取到数组中。

links = []
message.scan(/@\b[^@][a-z]*\b/).each{|x| links << x.sub('@','')}


2.1.5 :010 > links
 => ["freedom", "cake"]

但是我不知道如何将 linklinks 插入到 message 字符串中。

最佳答案

这是您可以使用的示例代码:

puts "Hi @freedom and @cake please review my commit.".gsub(/@([a-z]+)/i, "<a href='http:\/\/github.com\/\\1'>@\\1<\/a>")

输出:

Hi <a href='http://github.com/freedom'>@freedom</a> and <a href='http://github.com/cake'>@cake</a> please review my commit. 

Tested on TutorialsPoint .

您可以将正则表达式微调为 /(?<=^|\s)@([a-z]+)/i只匹配 @something在空格之后或字符串的开头。

关于ruby - 在ruby正则表达式中以@符号开头的单词之间插入html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29775649/

相关文章:

ruby - 在 Ruby 中计算整数的二进制描述中的前导数

ruby - 将实例变量设置为 'self' ?

javascript - 使用正则表达式删除带有省略号的未完成字符串

java - 如何正则表达式空格分隔的字母?

mysql - 为什么这个二级预加载不起作用?

ruby - 从数组中选择随机元素并将其删除

ruby - irb 转义双引号的行为

python - 从python中的列表中删除空字符串

正则表达式替换 Markdown 文件的代码块标记中的所有空格

javascript - 用数组元素替换字符串键