2017-11-09 11 views
0

RegExを使用してPythonのトラックタイトルから「ダウンロード」「フリー」「リリース」を含むタグを自動的に削除しようとしていますが、私はすでに解決策に近づいていますが、私は実際のタグのはるか前に一致するものを削除したいと思います。正規表現に単語を含むタグを正しく一致させる方法は?

トラックタイトルから「[Free Download]」だけをマッチさせるのではなく、以前のすべてのタグにも一致します。私はそれを使って、ダウンロードされたトラックにyoutube-dlから自動的にタグを付けることにしたいと思います.SoundCloudとYouTubeは良いメタをほとんど与えないからです。ここで

は私の現在の正規表現です:https://regex101.com/r/yaJ9yC/3

+0

要求された「ダウンロード」を含むすべてのタグを見つける。何が問題ですか? –

+0

これは宿題のようです。援助を受けたい場合は、何かを試して、難しいところを説明する必要があります。私たちは解決策を提供するつもりはありませんが、あなた自身を見つけるためにあなたを正しい軌道に乗せるかもしれません。 –

+0

@IliyanBobevいいえ、私自身の音楽ライブラリのためにやっていることです。私はyoutube-dlからダウンロードしたトラックのID3タグを自動的に追加したいと思っています:) –

答えて

0

だけで*は欲張りだからです。これは、ライン上で最も長い可能性に一致します。たとえば、[\(\[](と一致し、.*はすべてAstronaut REMIX) [FREEと一致し、download.*[\)\]]DOWNLOAD]と一致します。

Pythonの非貪欲な繰り返しreライブラリは*?によって行われます。しかし、例えば左のサイト上でのマッチングが開始さは、それはまだ動作しない上に、あなたは左サイト上ブラケットと角括弧を除外する必要があるため:あなたがタグとして括弧や括弧内のすべてを定義する場合

[\(\[][^\(\[]*download.*?[\)\]] 
+0

ありがとう、私は例として '[\(\ []。*?download?*?[\)\]]'あなたが提案したように、それはまだ他のタグにもマッチしました。 –

+0

申し訳ありませんが、私の最初のアイデアが間違っていた、私は答えを編集しました。 – xhancar

+0

これは動作します、私は後でそれをテストします、ありがとう! :) –

関連する問題