我在perl中有以下脚本:
use strict;
use warnings;
my $string = "int array[WIDTH][HEIGHT]";
$string =~ s#.*\[##;
print($string."\n");
预期产出:
WIDTH] [HEIGHT]
实际输出:
HEIGHT]
这个正则表达式出了什么问题?
答案 0 :(得分:2)
通过添加.*
:
?
懒惰
$string =~ s#.*?\[##;
^
这会使.*
匹配尽可能少,因此会在第一个[
停止而不会消耗它。
你也可以使用$string =~ s#[^\[]*\[##;
做同样的事情,[^\[]
不能消耗[
,所以不需要懒惰。