0

"text" contains 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/

リンクは 2 番目のケースに対してのみ作成されますが、最初のケース (前にいくつかの改行がある) に対しては作成されません。

4

1 に答える 1

0

改行/行頭検出の代わりに \b (単語境界) を使用することをお勧めします。

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

すでにプロトコルに一致しているため、代わりに「http:」は必要ありません。

于 2013-04-15T12:04:50.253 に答える