2012-07-02 47 views
0

我想從代碼中分離出數組名和數組大小。預期輸入的這個例子:正則表達式得到數組編號

blah_blah[blahvar] 
blah_ha[2] 
blah_[] 

我需要匹配括號內的名稱(blah_blah,blah_ha,blah_)和文本(blahvar,2, '')。 我有這個正則表達式:

([a-zA-z_]+)(\[[a-zA-Z_]*\]) 

但它不工作。請幫忙。

+0

「它不工作」是*從來沒有足夠的描述這個問題。什麼是錯的?它是否匹配太多?太少?它是否匹配正確的東西,但你無法提取組? –

+1

這可能不是你的問題的原因,但正則表達式的第一部分([a-zA-z _] +)具有小寫'z'而不是大寫'Z' – mrzli

回答

2

您需要包括數字:

([a-zA-z_0-9]+)(\[[a-zA-Z_0-9]*\])

不這樣做,你的第二個例子blah_ha[2]不會趕上(別人做的)。

較短的版本(即捕獲每一個字字符(字母,數字,等):

(\w+)(\[\w*\])

3

使用該正則表達式

([\w]+)\[([\w]*)\] 

組1將匹配陣列名稱和第2組將匹配指數