不量化*,贪心吗?不应该\s*
匹配0或更多的空格,并且反过来会匹配给定输入字符串结尾的所有内容吗?
#!/usr/bin/perl
use strict;
use warnings;
my $input="Name : www.devserver.com\n";
$input=~s/\w+.:\s*//; # /s* should not it match everthing till \n at the end ?
print $input;
请帮助我理解这种行为。
答案 0 :(得分:1)
\s*
将只匹配一个完全由同一个类的字符组成的字符串(即空格)。
在您的情况下,前导和尾随空格之间有www.devserver.com
。
您可能尝试使用.
课程代替\s
:
$input=~s/\w+.:.*//;
这也不会触及尾随换行符!根据{{3}}:
为了简化多行替换,“。”除非使用/ s修饰符,否则字符永远不会匹配换行符,这实际上告诉Perl假装字符串是单行 - 即使它不是。
所以,把它包起来:你期望的行为可以通过以下替代来再现:
$input=~s/\w+.:.*//s;