Регулярное выражение (PCRE) для соответствия URL - PullRequest
0 голосов
/ 12 мая 2010

Входные данные: мы получаем некоторый простой текст в качестве входной строки, и мы должны выделить все URL там с помощью <a href={url}>{url></a>.

В течение некоторого времени я использовал регулярное выражение, взятое из http://flanders.co.nz/2009/11/08/a-good-url-regular-expression-repost/,, которое я изменял несколько раз, но оно создано для другой проблемы - чтобы проверить, является ли вся входная строка URL-адресом или нет.

Итак, какое регулярное выражение вы используете в таких вопросах?

UPD : было бы неплохо, если бы ответы были связаны с php: - [

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Взгляните на пару модулей, доступных на CPAN:

где последний немного более прощающий. Регулярные выражения доступны в исходном коде (например, последнего ).

Например:

#! /usr/bin/perl

use warnings;
use strict;

use URI::Find::Schemeless;

my $text = "http://stackoverflow.com/users/251311/zerkms is swell!\n";

URI::Find::Schemeless
  ->new(sub { qq[<a href="$_[0]">$_[0]</a>] })
  ->find(\$text);

print $text;

Выход:

<a href="http://stackoverflow.com/users/251311/zerkms">http://stackoverflow.com/users/251311/zerkms</a> is swell!
0 голосов
/ 12 мая 2010

Для Perl я обычно использую один из модулей, определяющих общее регулярное выражение, Regexp::Common::URI::*. Вы можете найти хорошее регулярное выражение в источниках этих модулей.

http://search.cpan.org/search?query=Regexp%3A%3ACommon%3A%3AURI&mode=module

...