Regex 这种替代品有什么问题?
我正试图用_替换单词之间的所有空格,但它不起作用。这有什么问题?这种模式替换可能是最有效的解决方案:Regex 这种替代品有什么问题?,regex,perl,substitution,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; 替换将用下划线替换整个单词(\w+),然后替换空格,然后替换其他单词 真的没有必要替换(或捕获重要的内容)这些词 $a =~ s/\b \b/_
#!/usr/bin/perl
use strict;
use warnings;
my $s = "sad day
Good day
May be Bad Day
";
$s =~ s/\w+ \w+/_/gm;
print $s;
替换将用下划线替换整个单词(
\w+
),然后替换空格,然后替换其他单词
真的没有必要替换(或捕获重要的内容)这些词
$a =~ s/\b \b/_/g;
将用下划线替换分词符(
\b
,一个单词和非单词之间的零宽度转换),后跟一个或多个空格,后跟另一个分词符。使用\b
可以确保不会在新行之后或之前替换空格。如果没有明确的答案,这个问题将不完整:
$s=~s/(?请不要在示例中使用$a
或$b
,除非它涉及。$a
用于问题(以及您的答案!)。对于观众来说,$a
和$b
是“预先声明的”在Perl中,您可以在strict
下的排序例程中使用它。但我一直不知道为什么在其他任何地方使用它们都不好。我知道$a
是从哪里来的,看起来是Chas处理的。我可以发誓我使用了$s
!;)请不要在示例中使用$a
或$b
,除非它涉及到@Zaid-很好的观点,但我只是使用了与OP.+1相同的变量。我从来没有这么多地使用过“向前看”和“向后看”断言。谢谢。好吧,你也不需要前瞻中的+
。为了弥补这一点,您遗漏了空格字符后的+
;)
$a=~s/\b +\b/_/gm;
$s =~ s/(?<=\w) (?=\w+)/_/g