2016-04-25 6 views
0

私は正規表現の初心者です。私はこのようにPythonでいくつかの文字列を持っています:^b^[word](#30b) markdownテキストから。私は脚注を取り除き、ちょうどその言葉を得たいと思っています。抽出に単語wordスニペットPythonでmarkdownから脚注を削除するには

import re 
pattern = r"\[([\w]+)\]" 
s = "^b^[word](#32b)" 
m = re.search(pattern, s) 
print(m.group(1)) 

は、私は、次の作業を持っています。しかし、今私は括弧の中に複数の単語がある場合:^c^[every word](#12c)と私はすべての単語を抽出したいですか?ありがとう!

答えて

0

あなたはこれを使用することができます:\^[^^]+\^\[([^\]]+)\]\([^)]+\)

コードは次のようになります:

import re 
p = re.compile(ur'\^[^^]+\^\[([^\]]+)\]\([^)]+\)') 
test_str = u"^b^[word another words](#30b)" 


for (words) in re.findall(p, test_str): 
    print words.split() 

正規表現は非常に複雑ではない、それだけでエスケープの多くが含まれます。

  • [^^]+試合^

  • ないいくつかの文字
  • ([^\]]+))


ません括弧

  • [^)]+一致文字の内部をキャプチャ

    私は単語の単純な分割を提供しています。私がいないすべてのフットノートが `^ B ^`で始まることを知っているためにあなたがあまりにも少ないデータを与えた@TJB

    あなたは、より複雑なソリューションhere.

  • +0

    を見つけることができます。私はこれを修正し、単語の配列を取得するためのいくつかの指示を追加しました。質問を変更せず、代わりに新しい質問をしてください。 – Laurel

    +0

    ごめんなさい! ;-)私はあなたの助けに非常に感謝します。あなたのコードを実行すると、正規表現が無効な構文であるというエラーが出ます。私は何が欠けているのですか?それはPython3対Python2のことですか? – TJB

    +0

    @TJB Pythonはあまりよく分かりませんが、テストすると実行中です。エラーは何ですか? – Laurel

    関連する問題