2015-09-28 14 views
7

は私が[[ ]]これらの括弧で囲まれたすべてのデータを検索します。Pythonの正規表現部分エキス

[[AAAAA]] - > AAAAA

(再ライブラリを使用して)私のPythonコードは、私が唯一抽出したい場合はどう

la = re.findall(r'\[\[(.*?)\]\]', fa.read()) 

[[a|b]]

から ''

このタスクの簡潔な正規表現ですか? (|前抽出データ)

またはステートメント場合、私は、追加使用する必要がありますか?

答えて

3

あなたは試すことができます:

r'\[\[([^\]|]*)(?=.*\]\])' 

([^\]|]*)|または]が発見されるまで一致します。そして(?=.*\]\])]]が試合のRHSに一致していることを確実にする先読みです。

テスト:

>>> re.search(r'\[\[([^\]|]*)(?=.*\]\])', '[[aaa|bbb]]').group(1) 
'aaa' 
>>> re.search(r'\[\[([^\]|]*)(?=.*\]\])', '[[aaabbb]]').group(1) 
'aaabbb' 
+1

は簡潔な答えと説明を提供していただきありがとうございます。 正規表現に関するその他の記事を読む必要があります。注意すべき – SUNDONG

+0

ひとつだけ - これは、ネストされた括弧を処理しません(実際には正規表現がカウンターの助けを借りずに、とにかく一般的ではないでしょう)。 – brandonscript