用正则表达式perl替换和匹配表达式

时间:2012-07-12 08:59:24

标签: regex perl string-substitution

我有一个HTML文件,其中有许多表达式,如

/v/global/nagargaurav/CALL::ROWS_ARE_MATCHED.log

我有这样的代码

my $dir = /v/global/nagargaurav/;

$html =~ s/$dir\\/(.*?)::(.*?)\.log/$1 : $2/g;

print $html;

它给出了输出 -

CALL : ROWS_ARE_MATCHED

但我需要的是像这样输出

**CALL : ROWS ARE MATCHED**

并且有许多这样的线但表达式是相同的。 任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

use strict;
use warnings;

my $html = '/v/global/nagargaurav/CALL::ROWS_ARE_MATCHED.log';
my $dir  = '/v/global/nagargaurav/';

$html =~ s/$dir\/(.*?)::(.*?)\.log/$1 : $2/g;
$html =~ s/_/ /g;

print $html;

答案 1 :(得分:0)

使用/ e可以一步完成:

$html =~ s{ $dir /? ([^:]+) :: ([^.]+) \.log }
          { do{ local$_=$2;y/_/ /;"$1 : $_"} }gsex;

结果:

CALL : ROWS ARE MATCHED
顺便说一句,你的声明不是Perl,这些应该是:

my $html = '/v/global/nagargaurav/CALL::ROWS_ARE_MATCHED.log';
my $dir  = '/v/global/nagargaurav/';

或类似。

此致

RBO

相关问题