Ruby正则表达式无法识别字符串的开头

时间:2013-04-15 09:15:13

标签: ruby regex

我想替换"文字"包含http链接以及此链接的实际HTML标记。

这是我的Ruby代码

url_check = Regexp.new( '(\A|[\n ])([\w]+?://[\w]+[^ \"\r\n\t<]*)', Regexp::MULTILINE |    Regexp::IGNORECASE )
self.gsub!(url_check, '\1<a href="http://\2">\2</a>')
to_s

这是一个测试用例:

This is entrance page for the service (using HTML):

http://foobar.org/resources?format=html

Let us pick the "contributions" namespace: http://foobar.org/

仅为第二种情况创建链接,但不为第一种情况创建链接(之前有几个换行符)

1 个答案:

答案 0 :(得分:0)

我建议使用\ b(字边界)代替换行/开始检测:

.gsub!(/\b([\w]+?:\/\/[\w]+[^ \"\r\n\t<]*)/i, '<a href="\1">\1</a>')

您不需要替换“http:”,因为您已经匹配协议。