2017-12-30 16 views
0

リスト内のタプルペアに一致する正規表現を検索します。以下の正規表現を使用していますPython正規表現がタプルペアに一致する

s = '[(aleakedteaserand, NN), (abehind, IN), (the, DT)]'  
re.findall(r'\((.*,.*)\)',s) 

しかし、それでもまだ中括弧がありません。

['aleakedteaserand, NN), (abehind, IN), (the, DT'] 

予想される出力:

[(aleakedteaserand、NN)、(abehind、IN)、(DT)]

+0

置き、適切な引用符。 –

答えて

6

あなたは正規表現がungreedyしませんでした。解決策はre.findall(r'\((.*?,.*?)\)',s)です。

+0

質問に記載されているように期待される出力を得るには、エスケープされた '('を括弧の中に移動します:re.findall(r '(\(。*?、?*?\))、 –

+0

@Wrayいいえ、OPはマッチしたいが、括弧はキャプチャしない。 –

+0

@Wray期待される出力の中のカッコと括弧は、この場合のfindallが返すタプルのリストである。 –

1

代替手段。最初は、貪欲でない検索の代わりに使用されることが多い補完のマッチを使用します。

>>> re.findall(r'\(([^)]*)\)',s) 
['aleakedteaserand, NN', 'abehind, IN', 'the, DT'] 

>>> re.split('\), \(', s.strip('[()]')) 
['aleakedteaserand, NN', 'abehind, IN', 'the, DT'] 

ありません正規表現

期待出力の
>>> s.strip('[()]').split('), (') 
['aleakedteaserand, NN', 'abehind, IN', 'the, DT'] 
関連する問題