2017-06-22 11 views
0

新しい行に文字列があります。その音楽コンテンツは、事実です。私はアーティストが左側に、トラック名が右側に必要です。だからアーティスト - トラック。私はそれを持っていますトラック - アーティスト。片方の単語を別の単語にスワップ

私はこのようなことをするために使用できるものはありますか?私は周りを検索し、私は正しい言葉を探していないか、何も関係がない。

私はメモ帳でそれを達成したいと考えています++しかし、いくつかのオンラインツールや他の場合はそれを行うことは素晴らしいでしょう!

入力:

The Christmas Song (Chestnuts Roasting on an Open Fire) - Pentatonix 
Real Love - Tom Odell 
Winter - Joshua Radin 
White Christmas - Katy Perry 
Another Christmas - Amanda Jenssen 

出力:

Pentatonix - The Christmas Song (Chestnuts Roasting on an Open Fire) 
Tom Odell - Real Love 
Joshua Radin - Winter 
Katy Perry - White Christmas 
Amanda Jenssen - Another Christmas 

答えて

2

あなたは、単に行うことができます:

  • はCtrl +H
  • 検索何:^([^-]+) +- +(.+)$
  • はと交換してください:$2 - $1
  • すべて

説明置き換え:グループを取り込み、次の正規表現を使用し

^  : begining of line 
([^-]+) : group 1 everything that is not a dash 
-  : a dash with spaces around it 
(.*) : group 2, rest of the line 
$  : end of line 
+0

^(.+) - (.+)$

はと交換してください。 –

+1

@WiktorStribiżew:そうです。それは限界ですが、タイトルのアーティスト名ではありません。 – Toto

+0

ダッシュの周囲にスペースを追加すると、名前とタイトルのダッシュと区別できます。あなたはまた、名前のダッシュを無視する必要はありません。 – CodeMonkey

2

を。メモ帳で

^(.*?)\s+-\s+(.*?)$ 

++あなたは、キャプチャグループ$1$2を代用し、あなたが望むようにそれらを正しく配置することができます。

$2 - $1 

Regex101でデモを確認してください。

+0

曲のタイトルが最初に来るようです。だから、この '^(。*)+ - +(。*)'はうまくいくでしょう。 –

0

あなたの区切りSPACE-SPACEが一致している場合は、アーティストの位置を交換し、

(.+)(\s-\s)(.+) 

See it here

+1

これはNikolasの提案と基本的に同じですが、 '\ s'は行間で一致する可能性があります。 –

+0

私は私の答えを開始し、その後3がポップアップしたときに答えます。 Reg-exの質問はバスのようなものです。 –

0

ソリューション

ソース追跡するために、グループを使用します。https://superuser.com/questions/261072/reverse-name-order-in-notepad

をツール:Regex

は、メモ帳を開き++と検索に検索ボックスまたはナビゲートを開きCTRL + Fを押す -を探します。置き換えて、モードをの正規表現に切り替えます。に入力してください。セクション:^(.+) - (.+)$は、\2 - \1と置き換えてください。ヒットをすべて置き換え、それは行く!

簡体コード

何を検索します。これは、ハイフンと歌のタイトルのために動作しません\2 - \1

+0

他の回答とどのように違いますか? – Toto

+0

他の人が投稿する前に私はこれを書いた。私は他人を見たことがない。私が質問を掲示するとすぐに、私は似たような問題を探して答えを見つけました。私はこれを書いていましたが、他の人が投稿しました!だから私が知っている限り、私は自分自身で問題を解決しました。そのシンプルな、ポイントと何もクレイジーストレート。 – irishwill200

関連する問題