0

IMDb サウンドトラック データ ファイルのデータと一致する正規表現を作成しています。私の正規表現はほとんど機能していますが、名前付きグループにあまりにも多くのテキストを丸呑みしている場所があります。たとえば、次の正規表現を使用します。

"^  Performed by '?(?<performer>.*)('? \(qv\))?$"

実行者グループには、文字列' (qv)と実行者の名前が含まれます。残念ながら、レコードのフォーマットが一貫していないため、一部のパフォーマーの名前は一重引用符で囲まれていますが、そうでない人もいます。これは、正規表現に関する限り、オプションであることを意味します。

?>グループ指定子 を使用して、最後のグループを貪欲なグループとしてマークしようとしましたが、これは結果に影響を与えないように見えました。

実行者グループを変更して文字の狭い範囲に一致させることで結果を改善できますが、名前を正しく解析する可能性が低くなります。さらに、アポストロフィ文字を単に除外すると、たとえば、バイオハザード アポカリプスで取り上げられたRun For Your Lifeを演奏した Elia's Lonely Friends Band など、アポストロフィを含むバンド名を解析できなくなります。

更新: 要求に応じて、正規表現が一致する必要がある入力行の例を次に示します。既存の正規表現では処理できない他の形式も表示されます。

"  Performed by 'Carmen Silvera' (qv)"
4

1 に答える 1

2

私は IMDB のサウンドトラック データ ファイルを調べましたが、これですべてが解決するわけではありません。

var exp = new Regex(@"^  Performed by '?(?<performer>.*?)('? \(qv\))?$");

基本的には、パフォーマー マッチングで貪欲でない検索を指定する必要があります。

これがあなたのプロジェクトにとって長期的には十分ではない理由を説明するコメントを追加します.

于 2010-06-14T00:46:58.730 に答える