0

次のようなファイル名に一致する正規表現があります。

name - subname goes here v4 03.txt
name - subname long 03.txt
name - subname v4 #03.txt

追加データなしで、名前とサブネームを抽出したい。私は問題なくデータを抽出することができます。エラーが発生する問題はそのv4部分です (それは av であり、その後の数字であり、どこにも含まれていないバージョンマーカーです)、除外したいのですが、抽出されますサブネームと一緒に…

私の正規表現は次のようになります。

^([\w \.]+)(?:-)?([\w \.-]+)? #?\d+

私はこのようなことを試み?ましたが、「」の末尾にがないと機能(?:v\d+ )?し、バージョンがないとファイル名を一致させることができません:

^([\w \.]+)(?:-)?([\w \.-]+)? (?:v\d+ )?#?\d+

どうすれば機能しますか?

4

2 に答える 2

1

これを試して:

/^([\w \.]+?) - ([\w \.-]+?)(?: v\d+)? #?\d+/

(\ w +?)と(\ w +)の違いを理解する必要があると思いますか?

于 2011-08-14T13:59:29.867 に答える
0

これを2段階で行います。まず、不要な部分を削除します

a = str.sub /\s* (?: v\d+)? \s* \d+ \.[^.]*? $/x, ''

そして、「 - 」で文字列を分割します

a.split /\s*-\s*/
于 2011-08-14T12:24:26.337 に答える