2017-08-11 18 views
1

私は繰り返し質問しているかもしれませんが、私の問題に対する解決策を見つけることができませんので、余裕を持ってください! 引用符で囲まれたフレーズを正規表現で取り込む必要があります。それは簡単ですが、次のような引用符の統一がないと問題が発生します 'सीक्रेट सुपरस्टार'‘ डॉन 2 ’ re.findall(r"['(.*?)' |‘(.*?)’] ",text)を使ってみました。しかし、これはうまくいかない。 異なるタイプの引用符で囲まれたフレーズを見つけるには正規表現が必要です。正規表現を使用してフレーズをキャプチャする

+0

は '空白を削除し、' [ 'と']。 –

+0

この回答はあなたに役立ちますhttps://stackoverflow.com/a/9523932/5513005 –

答えて

1

あなたは

(?:(')|(‘))(.*?)(?(1)'|(?(2)’)) 

regex demoを参照してください使用することができます。

詳細

  • (?:(')|(‘)) - 試合と'(グループ1に入れて)、またはマッチをキャプチャし、をキャプチャ(グループ2に入れて)
  • (.*?) - 他の任意の0+文字を一致させますできるだけ少ない改行文字よりも
  • (?(1)' - グループ1がマッチした場合、一致する場合は'
  • | - 他
  • (?(2)’ - グループ2が一致した場合、試合
  • )) - 条件付き構文の終わり。

以下Python 2.7 demo参照してください:

rx = ur'''(?:(')|(‘))(.*?)(?(1)'|(?(2)’))''' 
s=u"'सीक्रेट सुपरस्टार' and ‘ डॉन 2 ’" 
for x in re.finditer(rx, s): 
    print(x.group(3).encode("utf8")) 

出力:

सीक्रेट सुपरस्टार 
डॉन 2 
+1

答えに感謝します。しかし、私は "सुपरस्टार"または他のタイプの引用符で囲まれたテキストのようなフレーズをチェックする条件を追加する必要があります。上記のソリューションでは、私は2つの状態をキャプチャすることができます。複数の条件を含める方法はありますか? –

+0

はい、代わりに最初の '(?:...)'グループにキャプチャグループを追加するだけで、最後に条件付き構成にチェックを追加します。 '[" ''](。*?)["'']'のように文字列をマッチさせる別の方法を試すこともできます。 [このPythonのデモ](https://ideone.com/GKXCjL)を参照してください。これらの正規表現[** here **]を確認してください(https://ideone.com/Y6Dazl)。[** ['']] //regex101.com/r/5D4SpO/1)。 –

関連する問題