#!/usr/bin/perl --
use strict; use warnings;
use Data::Dump qw/ dd /;
use CGI qw/ escapeHTML /;
my $text = "Video1: http://www.youtube.com/watch?v=dTi4v3HveqE
Video2: [video]http://www.youtube.com/watch?v=dTi4v3HveqE[/video]";
$text =~ s{
(?:
(^|\s|\>) # $1
( # $2
(http|https) # $3
://www.youtube.com/watch\?\S*v=
([a-z0-9-_%]+) # $4
[&\w;=\+\-]*
)
)
|
(?:
\Q[video]\E
( # $5
(http|https) # $6
://www.youtube.com/watch\?\S*v=
([a-z0-9-_%]+) # $7
[&\w;=\+\-]*
)
\Q[/video]\E
)
}{
my $ret = "";
my $https = $3 || $6;
my $vid = $4 || $7;
$ret .= "\n\n";
$ret;
}gmsxie;
dd $text;
print "\n\n$text\n";
__END__
"Video1:\n\n\nVideo2: \n\n"
Video1:
Video2: