8

正規表現を使用して曲を編集するソフトウェアを使用しています。これは私が持っているものです:

ジミー・イート・ワールド - ザ・ミドル (.mp3)

私がやりたいのは、「-」の前のスペースとその後のすべてを削除することです。そのため、「Jimmy Eat World」だけが残ります。

そして、実行したいもう 1 つのアクションは、「-」までのすべてとそれに続くスペースを削除することです。これにより、「The Middle」だけが残ります。

4

4 に答える 4

11

それは簡単なことです。

最初のアクション- ダッシュの後のすべてを削除します。

  • / -.*/空の文字列に置き換えます。(ダッシュの前に実際のスペースがあることに注意してください。)
  • ダッシュの前に複数のスペースがある可能性がある場合は、次のバリアントを使用できます/ +-.*/(ここでも の前に実際のスペースがあります+)。

2 番目のアクション- ダッシュまでのすべてを削除します。

  • /.* - /空の文字列に置き換えます。(ダッシュの後に実際のスペースがあることに注意してください。)

ノート

  • 上記のスラッシュ/は正規表現の一部ではないため、入力する必要はありません。ここでは視覚的な区切り記号として機能します。
  • 「任意の文字」.を意味します(ファイル名に含まれない改行を除く)
  • 「前の項目、ゼロ回から任意の回数」を*意味します
  • 、「前の項目、少なくとも 1 回、場合によっては何度でも」を+意味します。
  • 正規表現の他のほとんどの文字は意味を持っているため、正規表現のスペースは文字列のスペースと一致します。注目すべき例外は^$.+*?{}(、および)であり[、これらには独自の特別な意味がありますが、あなたの状況ではそれほど重要ではありません。]|\
于 2013-01-06T16:46:24.853 に答える
2

あなたのプログラムは、正規表現で括弧で囲まれたグループを抽出できますか? その場合、次のような式を作成できます (例は Python で記述されています)。

In [1]: import re    

In [2]: match_obj = re.match(r'(.+?)\s*-\s*(.+?)\.mp3', 'Jimmy Eat World - The Middle.mp3')

In [3]: match_obj.group(1)
Out[3]: 'Jimmy Eat World'

In [4]: match_obj.group(2)
Out[4]: 'The Middle'
于 2013-01-06T17:09:13.257 に答える
1

これは、空白で囲まれた最初のハイフン、空白、およびその後のすべてに一致します (空の文字列に置き換えます)。

\s\-\s.*

これは、空白で囲まれた最初のハイフン、空白、およびその前のすべてに一致します。

.*\s\-\s

これは、リテラル(.mp3)とその前のオプションの空白 (任意の量) に一致します。

\s*\(\.mp3\)
于 2013-01-06T16:47:39.893 に答える
0

曲名を取得するには.*-\s*、何も置き換えないでください。その後、何も置き換え\s*\(\.mp3\)ません。

MP3 や WMA などのさまざまなファイル タイプがある場合は、追加のファイル タイプを次のように 2 番目の正規表現に追加できます\s*\(\.(mp3|wma|avi|mpg|mpeg)\)

于 2013-01-06T16:48:27.350 に答える