正则表达式在指定之前删除所有符号

时间:2013-07-07 11:24:58

标签: regex perl

我在perl中有以下脚本:

use strict;
use warnings;

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

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

print($string."\n");

预期产出:

  

WIDTH] [HEIGHT]

实际输出:

  

HEIGHT]

这个正则表达式出了什么问题?

1 个答案:

答案 0 :(得分:2)

通过添加.*

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

这会使.*匹配尽可能少,因此会在第一个[停止而不会消耗它。

你也可以使用$string =~ s#[^\[]*\[##;做同样的事情,[^\[]不能消耗[,所以不需要懒惰。