Perl 如何搜索并用“替换”;或;条件

Perl 如何搜索并用“替换”;或;条件,perl,Perl,这是一个微不足道的问题,但我希望有人能给我指出正确的方法。我有一个字符串“雷雨”,我用“T/风暴”代替 碰巧“雷雨”有时被写成“雷雨”。我没有编写两个搜索和替换命令,而是希望在一个命令中将“雷雨”或“雷雨”替换为“T/storms”。使用| s/雷雨|雷雨/T\/Storms/gi 示例代码: use strict; use warnings; my $str = 'Thunderstorms foo Thunder Storms bar'; $str =~ s/Thunderstorms|T

这是一个微不足道的问题,但我希望有人能给我指出正确的方法。我有一个字符串“雷雨”,我用“T/风暴”代替

碰巧“雷雨”有时被写成“雷雨”。我没有编写两个搜索和替换命令,而是希望在一个命令中将“雷雨”或“雷雨”替换为“T/storms”。

使用
|

s/雷雨|雷雨/T\/Storms/gi

示例代码:

use strict;
use warnings;

my $str = 'Thunderstorms foo Thunder Storms bar';
$str =~ s/Thunderstorms|Thunder\sStorms/T\/Storms/gi;
print $str;

您可以使用
\s*
匹配零个或多个空格:

use warnings;
use strict;

while (<DATA>) {
    s{Thunder\s*storms}{T/Storms}gi;
    print;
}

__DATA__
Thunderstorms
Thunder Storms
Thunder storms
我对替换操作符(
s{}{}
)使用了不同的delimeter,以避免转义
/

use warnings;
use strict;

while (<DATA>) {
    s{Thunder\s*storms}{T/Storms}gi;
    print;
}

__DATA__
Thunderstorms
Thunder Storms
Thunder storms
T/Storms
T/Storms
T/Storms