假设我有一个字符串“快速的棕色狐狸跳过懒惰的狗”,我可以将其更改为“带有慢速的棕色狐狸跳过充满活力的狗”吗?目前,我针对这种情况使用了两组正则表达式。 (在这种情况下,我先使用s/quick/slow/,再使用s/lazy/energetic/。)

最佳答案

替换的第二部分是双引号字符串,因此可以进行任何常规插值。这意味着您可以使用捕获值将索引编入哈希:

#!/usr/bin/perl

use strict;
use warnings;


my %replace = (
    quick => "slow",
    lazy  => "energetic",
);

my $regex = join "|", keys %replace;
$regex = qr/$regex/;

my $s = "The quick brown fox jumps over the lazy dog";

$s =~ s/($regex)/$replace{$1}/g;

print "$s\n";

关于regex - 我可以在VIM或Perl的单个正则表达式中替换多个项目吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/765894/

10-15 23:03