Perl匹配空行用m/^*$ /

nik*_*tix -1 regex perl

这是perl脚本:

while ($line = <>)
{
        if ($line =~ m/^ *$/)
        {
                $line = "--blank\n";
        }
        print($line);
}
Run Code Online (Sandbox Code Playgroud)

用文件替换文件中的所有空行--blank\n.

我不明白为什么它有效.为什么这个正则表达式m/^ *$/匹配空白行?因为行尾有换行符,所以必须不匹配.

更新:

我假设:^是行的开头,*没有或尽可能多的空格$,行尾.

空行必须是这样的:[ ][ ][ ]\n那就是^[ ]*然后\n$.

他们为什么匹配?

yst*_*sth 5

$ 匹配字符串的结尾或字符串末尾的换行符之前.

  • @nikachx,请注意您阅读的文档.有很多正则表达式引擎,它们都有差异.例如,`$`确实是其他一些引擎中<strike> line </ strike>字符串的结尾.在Perl中,那是`\ z`.在Perl中,`$`相当于`(?= \n\z |\z)`(不带`m`修饰符)或`(?= \n |\z)`(带有`m`修饰符) . (2认同)