質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

3回答

2599閲覧

正規表現が解らず苦戦しています

yukinko_Icicle

総合スコア11

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

1クリップ

投稿2017/03/19 04:36

###前提・実現したいこと
音楽ファイルのタグ付けで正規表現が解らず苦戦しています
アーティストのフィールドの特定の部分だけ削除したいです

このような名前を
例1:あいうえお(CV.abcd)
例2:かきくけこ(CV.efg)、さしすせそ(CV.xyz)

例1:abcd
例2:efg、xyz
と、このようにしたいです

削除したいものは
半角括弧と括弧の外の文字
括弧の中の特定の文字の「CV.」です

一発で無理なら順を追って、ある程度楽に作業したいです
例えば、
1回目の作業で
(CV.abcd)
(CV.efg)、(CV.xyz)

2回目で
abcd
efg、xyz
とかでも良いので、
正規表現に詳しい方いましたらご教示お願いします。

###試したこと

$regexp(%ARTIST%,'(.?)',)
$regexp(%ARTIST%,'[(].
?[)]',)

あいうえお
かきくけこ、さしすせそ

とこのようになってしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikedas

2017/03/19 04:39

使用しているプログラミング言語を明記していただけませんか。
yukinko_Icicle

2017/03/19 05:48

すみませんよく分かりません。使用してるソフトはMp3tagです。
ikedas

2017/03/19 06:50

それが重要です。ご質問に、使っているソフトの名前とバージョンを追記下さいますか。
退会済みユーザー

退会済みユーザー

2017/03/19 06:57

タグ付けというのは具体的にどういったことをなさるのですか?
guest

回答3

0

ベストアンサー

これを試してみてください。
検索文字列[^(]+\(CV\.([^)]+)\)置換文字列$1

投稿2017/03/19 10:29

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukinko_Icicle

2017/03/19 12:14

ありがとうございます 惜しいです 例1:あいうえお(CV.abcd) の場合は問題ないのですが、例2:かきくけこ(CV.efg)、さしすせそ(CV.xyz)だと、efgxyzとなってしまいます。 これをefg、xyzとすることは無理でしょうか もし、無理であるなら(CV.efg)、(CV.xyz) のような状態に出来ますでしょうか このようにできれば、次にアクションで指定文字のみ削除できるので...
Zuishin

2017/03/19 12:29

ならないと思いますよ。全角半角を間違えたりしていませんか?
Zuishin

2017/03/19 12:44

すみません。書き間違えていたのは私でした。 [^(、]+\(CV\.([^)]+)\) こっちです。
yukinko_Icicle

2017/03/19 12:50

そのままコピペしたので間違いは無いと思います。 「、」まで消えてしまいました。 いま置換文字列を「、$1」にして 同時に別のアクション「^.{1}」で「、efg、xyz」したのを先頭文字を消して「efg、xyz」してます これで何とかまとめて作業は出来ますが、できればもう少しスマートにできればと思います。
yukinko_Icicle

2017/03/19 12:53

あ、入れ違いですみません。 ありがとうございます。できました これで作業がだいぶ楽になります 教えていただき本当にありがとうございました。
guest

0

Ruby

1strs = ["あいうえお(CV.abcd)", "かきくけこ(CV.efg)", "さしすせそ(CV.xyz)"] 2strs.each do |e| 3 puts e.scan(/.+?\(CV\.(.+?)\)/) 4end

実行結果例

abcd efg xyz

私も考えてみました。
恐らく一度で削除できているのではと思います。

投稿2017/03/19 06:16

編集2017/03/19 06:19
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukinko_Icicle

2017/03/19 06:24

すみません言ってる意味が全く理解できません 処理したいファイルは20000くらいあります まとめて作業したいのです。
退会済みユーザー

退会済みユーザー

2017/03/19 06:49

katoy様の回答に対して「一度に」とおっしゃっていたので、scanやgsubを一度だけ使って削除すればよいのかなぁと考えました。すみません。
guest

0

ruby で、無理やり? に行ってみました。

ruby

1s.scan(/\(CV.*?\)/).join(', ').gsub('(CV.','').gsub(')', '')

実行例

ruby

1$ irb 2irb(main):001:0> s ='あいうえお(CV.abcd)' 3=> "あいうえお(CV.abcd)" 4irb(main):002:0> s.scan(/\(CV.*?\)/).join(', ').gsub('(CV.','').gsub(')', '') 5=> "abcd" 6 7irb(main):003:0> s ='かきくけこ(CV.efg)、さしすせそ(CV.xyz)' 8=> "かきくけこ(CV.efg)、さしすせそ(CV.xyz)" 9irb(main):004:0> s.scan(/\(CV.*?\)/).join(', ').gsub('(CV.','').gsub(')', '') 10=> "efg, xyz" 11

投稿2017/03/19 05:13

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukinko_Icicle

2017/03/19 05:55

すみません。よく分かりません 使用してるソフトはMp3tagです。 試したことと結果だけ書いておきます .\(\CV.|\)|\)\\' かきくけこefg、さしすせそxyz .*\(\CV.|\)|\)\\' xyz 一度にそれぞれの括弧の前を削除するのは無理でしょうか....
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問