2013-07-07 53 views
1

我在Perl以下腳本:Regex的去除指定之前的所有符號

use strict; 
use warnings; 

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

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

print($string."\n"); 

預期輸出:

WIDTH] [HEIGHT]

實際輸出:

HEIGHT]

這個正則表達式有什麼問題?

回答

2

充分利用.*懶加入?

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

這將使.*匹配儘可能少,因此在第一[停止不消耗它。

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

+0

謝謝!它有幫助。我會在接下來的15分鐘內接受你的回答。 – Alex

+0

@亞歷克斯,不客氣:) – Jerry

+0

+1爲下一行的小克拉:)(和cos是正確的) – Bohemian

相關問題