如何搜索和替换为 "OR" 条件

How do I search and replace with "OR" condition

这是一个小问题,但我希望有人能指出正确的方法。我有一个字符串“Thunderstorms”,我将其替换为“T/storms”。

s/Thunderstorms/T\/Storms/gi

恰好“Thunderstorms”有时也写作“Thunder Storms”。我没有编写两个搜索和替换命令,而是在一个命令中寻找用“T/Storms”替换“Thunderstorms”或“Thunder storms”。

使用|.

s/Thunderstorms|Thunder\sStorms/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

输出:

T/Storms
T/Storms
T/Storms

我为替换运算符 (s{}{}) 使用了不同的定界符以避免转义 /