2016-08-09 95 views
1

我想获取方括号,这是作为数组获取括号内

u16 arrayName_1[8][7] 

我有Python代码,可以找到一维数组,并得到squre括号内的文字里面的串串。

var = 'u16 arrayName_1[8]' 
index = re.split('\[(.*?)\]', str(var)) 

index [0]将给出'u16 arrayName_1'。

index [1]将给出'8'。

问题: 我想获取二维数组括号内的字符串。我尝试了下面的代码,但它不是期望的结果。

var = u16 arrayName_1[8][7] 
index= re.split('(\[.*\])$', str(var)) 

index [0]将给出'u16 arrayName_1'。

index [1]将给出[8] [7]'。这是错误的结果。

我希望输出这样的:

指数[1] = '8'

指数[2] = '7'

+0

你有没有试过*匹配*与你的模式? ['re.findall(r'\ [(。*?)\]',str(var))'](https://ideone.com/JFfHYD) –

+0

不,我试过re.findall。 – user2030113

回答

3

你可以用你自己的方式在re.findall抓住所有内容里面[...]

import re 
var = 'u16 arrayName_1[8][7]' 
index = re.findall(r'\[(.*?)\]', var) 
print(index) # => ['8', '7'] 

Python demo

要仅匹配里面的数字,请使用\[([0-9]+)]正则表达式。此外,您不必在字符类外部逸出]符号,并且应该考虑使用原始字符串文字来定义您的正则表达式模式,以避免与未转义的反斜杠混淆。

+0

注意:如果索引本身有一个索引,则不起作用,如'foo [bar [1]]'。 (这不是要求,只是想指出限制...) –

+0

是的,这就是为什么我还建议'\ [([0-9] +)]'。 –