0

量指定子 * 、貪欲ではありませんか? \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;

この動作を理解するのを手伝ってください。

4

1 に答える 1

1

\s*は、完全に同じクラスの文字 (つまり、空白) で構成される文字列のみに一致します。あなたの場合、www.devserver.com先頭と末尾のスペースの間にあります。

.の代わりにクラスを使用しようとした可能性があります\s

$input=~s/\w+.:.*//;

これは、末尾の改行にも触れません! perlreによると:

複数行の置換を簡略化するために、「.」/s 修飾子を使用しない限り、 character は決して改行にマッチしません。これは実際には、文字列が 1 行であると見なすように Perl に指示します (そうでない場合でも)。

まとめ: 予想される動作は、次の置換で再現できます。

$input=~s/\w+.:.*//s;
于 2012-12-28T14:45:03.217 に答える