简单的perl正则表达式替换

时间:2016-08-15 20:12:49

标签: regex perl

这是我的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>

1 个答案:

答案 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>