如何将替换表达式中的正则表达式与Perl中的变量进行比较?

时间:2013-06-03 03:25:15

标签: regex perl

所以我是Perl的新手,我正在尝试正则表达式

my $address = 'http://mail.google.com/belmark';

s/$address=~(\w+:\/\/)(.*.com)(\/\w+)/$1$2\/dev\/public_html/ if ($address =~ /.*\/belmark/);

该代码在替换部分中给出了错误

我想要完成的是使用预定义变量在regex里面替换表达式进行比较。我可以使用$_成功比较它。那我该怎么办呢?

2 个答案:

答案 0 :(得分:2)

#!/usr/bin/perl
use strict;
use warnings;
my $address = 'http://mail.google.com/belmark';

$address =~ s/(\w+:\/\/)(.*.com)(\/\w+)/$1$2\/dev\/public_html/ if ($address =~ /.*\/belmark/);

print "Address is: $address";

Ideone demo

由于您不熟悉Perl中的正则表达式,因此您应该从perlrequick开始。

答案 1 :(得分:1)

如果您需要此功能适用于.net.org或其他内容......

另一种可能的选择。

my $address = 'http://mail.google.com/belmark';
$address =~ s/(\.(?:net|org|com)).*/$1\/dev\/public_html/ if $address =~ /belmark$/;

print "$address\n";

__OUTPUT__
http://mail.google.com/dev/public_html