0

这个问题是指

如何在 sed 中使用贪婪方法替换文本?

我必须匹配文件中的多行数据,并且需要使用 perl 将它们替换为其他文本。

猫文件

 <strong>ABC
       </strong>

perl 脚本:code.pl

 #!/bin/perl
 open(fh, $ARGV[0]) or die "could not open file\n";
 while($input = <fh>)
 {
      if($input =~/&lt;strong&gt;(.*?)\n(\s)*&lt;\/strong&gt;/)
      {
          print($1,"\n");
      }
 }
 close(fh);

perl 代码.pl 文件

输出:无输出

如何解决上述pblm。

问候

4

1 回答 1

2
use File::Slurp qw( read_file );

my $string = read_file( $ARGV[0] );

$string =~ s/\&lt;strong&gt;(.*?)&lt;\/strong&gt;/<b>${1}<\/b>/gs;

print $string;

此示例使用 File::Slurp 模块一次读取整个文件。

然后它使用带有gands修饰符的正则表达式。s允许.*?匹配换行符。使g搜索全局化。全局意味着它将找到给定字符串中的所有匹配项。没有g唯一的第一个实例将被替换。如果您希望搜索不区分大小写,可以使用i正则表达式修饰符。

${1}是对括号中匹配项的反向引用。

这个例子产生:

<b>ABC
     </b>
于 2013-01-18T06:02:15.257 回答