2013-04-15 107 views
0

我想用此链接的实际HTML标记替换包含http链接的“text”。Ruby正则表达式无法识别字符串的开头

这里是我的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/ 

该链接仅创造了第二种情况,但不是第(其中有几个换行符之前)

+0

您可以添加预期的输出吗?我必须在这里失去一些东西.. –

+0

它正在为我工​​作。 http://pastebin.com/UY2udJ1a创建这两个链接。你可以把第一组中的字符类推广到'(\ A | [\ s])'来捕获任何空格,而不仅仅是换行和空格。 –

+0

嗨安德烈,也许它不是多线,但dotall。 – User

回答

0

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

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

如果您已经匹配协议,则不需要“http:”代替。

相关问题