Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 这种替代品有什么问题?_Regex_Perl_Substitution - Fatal编程技术网

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