私はCaliberライブラリを管理しようとしています。 CalibreはPython regexを使ってデータベースフィールドを操作します。特に、sub()メソッドに対する "pattern"引数と "repl"引数を指定することができます。しかしそれはあなたができることのすべてであり、他のコーディングはありません。私の現在の問題は、私のグループ表現に一致するものがない場合、Caliberは「不一致グループ」エラーを報告し、処理を拒否することです。文字列または空の文字列と一致する一致グループをreモジュールsub()で作成しますか?
「常に一致しますが、本当に存在しない場合は空の文字列を含むグループを作成できますか?
サブストリングが見つかった場合は、サブストリングでフィールドを置き換えるか、サブストリングが見つからない場合は空のストリングに置き換えます。私は最初の例から「パーン10」を選ぶと、「Tswの7」第四の例から、シリーズフィールドにそれらを書きたい
Anne McCaffrey - Pern 10 - The Renegades of Pern
Generation Warriors
The Mystery of Ireta: Dinosaur Planet & Dinosaur Planet Survivors
Anne McCaffrey - Tsw 7 - Ship That Returned
:私は現在のようなタイトルを混ぜています。これどうやってするの?
私の現在、誤った表現が
(((P<author>[^-]*?)-)?((?P<series>\w+)\W*(?P<series_index>\d*)\s-))?(?P<title>.*)
現時点で私が欲しいだけのフィールドは、任意のアイデアを
\g<series>
感謝です!です
本当にPerlの 're'モジュールを使用しているとは思いませんか?私はそれがPerl正規表現を使用すると思う。あなたはPythonの 're'モジュールを考えていますか? PerlがサポートしているPythonという名前のキャプチャ構文を使用しているのを見ていますが、私のコメントによれば、私はJavaの構文がよかったです。 – tchrist
[Calibre](http://calibre-ebook.com/)はPythonアプリケーションです。私は説明とタグを修正しました。 – daxim