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