量指定子の +
と *
は、欲張り (greedy) なので、できるだけ多くの範囲にマッチしようとします。
my $line = 'This is a bookable book.';
$line =~ s/(This.+book)/[$1]/;
print $line, "\n";
[This is a bookable book].
+
と *
の代わりに、+?
と *?
を使うようにすると、できるだけ短い範囲でマッチしてくれます。
my $line = 'This is a bookable book.';
$line =~ s/(This.+?book)/[$1]/;
print $line, "\n";
[This is a book]able book.