2012-09-17 46 views
1

我有一個字符串:Perl的正則表達式字符串部分陣列

"2012-szept-17 02:55 - someproblem: 192.167.1.1 since - $somevariables[0] $morevariables[-1]" 

,我想這些了它到一個數組

$somevariables[0] 
$morevariables[-1] 

的問題是,這些變量可以任意取名否則他們可能在字符串中的任何地方。我所知道的唯一一件事就是他們以$開頭,最後有[sg]

這是我用正則表達式得到了最遠

my @fuu = $notimsg =~ m/(\$.+\[.+\])/g; 

的問題是表達正在此爲"$somevariables[0] $morevariables[-1]"

回答

1

如果它們必須是有效的變量名稱(標識),然後嘗試

m/(\$\w+\[[^]]+\])/g 

As @Borodin指出,如果你真的想確保你只匹配標識符(而不是像$3abc[12]那樣奇怪),y ou可以使用

m/(\$[a-z_]\w*\[[^]]+\])/gi 
+0

非常感謝!它解決了我的問題。 – oturw

+0

這允許以數字開頭的變量名稱。正確的正則表達式是'/(\ $ [a-z _] \ w * \ [[^]] + \])/ i' – Borodin

+0

我想數組在最後使得它不太可能出現......畢竟,他的問題是避免空間。不過,我會編輯添加。 – nneonneo

相關問題