2016-08-09 11 views
1
私は私が1次元配列を見つけ、squreの括弧の中の文字を取得することができますPythonコードを持って配列

ブラケット

u16 arrayName_1[8][7] 

として与えられている角括弧、中の文字列を取得したい

の中の文字列を取得します。

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

インデックス[0]は 'u16 arrayName_1'を返します。

インデックス[1]は '8'を返します。

問題: 2D配列の角括弧内に文字列を入れたいと思います。私は以下のコードを試しましたが、望む結果ではありません。

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

インデックス[0]は 'u16 arrayName_1'を返します。

index [1]は '[8] [7]'を返します。これは間違った結果です。

私のような出力たい:

インデックスあなたはすべての内容をつかむためにre.findallで独自のパターンを使用することができます[1] = '8'

インデックス[2] = '7'

+0

*あなたのパターンに*一致*してみましたか? [re.findall(r '\ [(。*?)\]'、str(var)) '](https://ideone.com/JFfHYD) –

+0

いいえ、私はre.findallを試してみませんか? – user2030113

答えて

3

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] +)]'を提案しています。 –

関連する問題