这是我的perl代码:
my $var="[url=/jobs/]click here[/url]";
$var =~ /\[url=(.+?)\](.+?)\[\/url\]/<a href="\1" style="text-decoration:none;color:#336699">\2</a>/g
我是perl的新手所以我知道它不正确但我如何正确执行此regex replacement
。
最终结果是将$var
转换为<a href="/jobs">click here</a>
答案 0 :(得分:2)
因此,在您知道所有答案后,替代表格为s///
然而,有了这么大的东西,你应该把它分解成各个部分 使其更容易维护。并且还有助于 out delimiter hell 的泥潭。
这使用预编译的正则表达式和使用s /// e
调用的回调函数
use strict;
use warnings;
# Pre-compiled regex
my $rx = qr{\[url=(.+?)\](.+?)\[/url\]};
# Callback
sub MakeAnchor {
my ($href,$text) = @_;
return '<a href="' . $href . '" style="text-decoration:none;color:#336699">' . $text . '</a>';
}
my $input = '[url=/jobs/]click here[/url]';
$input =~ s/$rx/MakeAnchor($1,$2)/eg;
print $input;
Outout
<a href="/jobs/" style="text-decoration:none;color:#336699">click here</a>