のような声明:regexはステートメントとオプションの終わり部分をどのようにマッチさせますか?
[string1...] string2 in english/chinese (string3...)
はstring3が()
であり、省略可能です。
私はPythonで正規表現パターンの書き込み:
(\[(?P<string1>.*)\])\s*(?P<string2>.*)\s(\((?P<string3>.*)\))?
をしかし*
として貪欲な試合とはstring3はstring2の中に解析されますです。
は私のような先読みマッチはstring3を使用します。
(\[(?P<string1>.*)\])\s*(?P<string2>.*(?=\())\s*((?P<string3>.*)\))?
しかし、また一致ではありません。
どのように3つのマッチ部分を取得する必要があり、最後の部分は()
内でオプションですか?
、すべてこのパターンです。 –
問題のように、入力には最後に '?'という文字列がありますか? – anubhava
@anubhava申し訳ありませんが、最後の '? 'はstring3が省略可能であることを示しています。プレーンテキストで削除します –