如何搜索和替换为 "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{}{}
) 使用了不同的定界符以避免转义 /
。
这是一个小问题,但我希望有人能指出正确的方法。我有一个字符串“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{}{}
) 使用了不同的定界符以避免转义 /
。