Замена URL-адресов в строках - Perl - PullRequest
2 голосов
/ 16 февраля 2011

У меня есть несколько строк, в которых есть URL-адреса, и мне нужно удалить URL-адрес и заменить его другим. Единственный способ сделать это - split:

($start, $url, $end) = split(/:/);

Но я не думаю, что это правильный путь, потому что если URL находится в начале или конце строки, он не будет работать должным образом.

Любые идеи с благодарностью:)

Ответы [ 4 ]

6 голосов
/ 16 февраля 2011

Попробуйте использовать URI :: Find .

2 голосов
/ 16 февраля 2011

Уже предложенный URI :: Find выглядит хорошей ставкой.

В качестве альтернативы, Regexp :: Common может предоставить подходящие URL для соответствия URL,например:

use Regexp::Common qw(URI);
my $string = "Some text, http://www.google.com/search?q=foo and http://www.twitter.com/";
$string =~ s{$RE{URI}}{http://stackoverflow.com/}g;

Приведенный выше заменит оба URL-адреса на http://stackoverflow.com/ в качестве примера.

1 голос
/ 16 февраля 2011

URI :: URL - ваш друг.

#!/usr/bin/perl
use strict;
use URI::Split qw(uri_split uri_join);
my ($scheme, $auth, $path, $query, $frag) = uri_split($uri);
my $uri = uri_join($scheme, $auth, $path, $query, $frag);
0 голосов
/ 26 марта 2011

, если у вас также есть несколько входных файлов, и вам необходимо последовательно изменять строки во всех входных файлах, этот сценарий может пригодиться:

http://unixgods.org/~tilo/replace_string/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...