2013-04-15 3 views
0

Я хочу заменить текст, содержащий ссылку http с фактической разметкой HTML для этой ссылки.Ruby regex не распознает начало строки

Вот мой рубин код

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

Привет, Андрей, может быть, он не многострочный, но достоящий. – User

ответ

0

Я предлагаю использовать \ b (граница слова) вместо обнаружения новой строки/начала строки:

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

Вам не нужно «http:» в замену, поскольку вы уже соответствуют протоколу.

Смежные вопросы