1

私はperlで次のスクリプトを持っています:

use strict;
use warnings;

my $string = "int array[WIDTH][HEIGHT]";

$string =~ s#.*\[##;

print($string."\n");

期待される出力:

幅高さ]

実際の出力:

身長]

この正規表現の何が問題になっていますか?

4

1 に答える 1

2

追加して.*怠け者にし?ます:

$string =~ s#.*?\[##;
               ^

これにより、.*一致が可能な限り少なくなるため、最初の一致[を消費せずに停止します。

を使用$string =~ s#[^\[]*\[##;して同じことを行うこともできますが、 を[^\[]消費することはできない[ため、怠る必要はありません。

于 2013-07-07T11:25:58.020 に答える