这种替代有什么问题?

Tre*_*ree 2 regex perl substitution

#!/usr/bin/perl

use strict;
use warnings;

my $s = "sad day
 Good day
 May be Bad Day 
 ";

$s =~ s/\w+ \w+/_/gm;

print $s;
Run Code Online (Sandbox Code Playgroud)

我试图用_替换单词之间的所有空格,但它不起作用.这有什么问题?

mir*_*rod 5

替换替换整个单词(\w+)然后是空格,然后用下划线替换另一个单词.

实际上没有必要替换(或捕获重要的)这些词

$a=~s/\b +\b/_/gm;
Run Code Online (Sandbox Code Playgroud)

将替换一个单词中断(\b一个单词和一个非单词之间的零宽度过渡),后跟一个或多个空格,后跟另一个单词中断,用下划线.使用\b可确保您不会在新行之后或之前替换空格.

  • 请不要在示例中使用`$ a`或`$ b`,除非涉及[排序](http://perldoc.perl.org/perlvar.html). (2认同)