正则表达式从数据中提取文件名

时间:2018-12-05 16:54:02

标签: regex

我有一些从便携式媒体播放器中获得的数据。我正在尝试从数据中提取.mp3文件名。 mp3文件的格式为AUD-20181015-WA0009.mp3

文件还可以具有wav和m4a的文件扩展名。

有人可以帮我提取提取文件名的RegEx

下面的示例数据

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Uª        MP3 D @        D @                                                          €ÂŸxlŸÿþ**A U D - 2 0 1 8 1 1 1 7 - W A 0 1 9 0 . m p 3**   AH}                                                                                                          M4A D          D                                                            €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 8 8 . m 4 a   AH}                                                                                                         MP3 D `        D `                                                          €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 8 7 . m p 3   AH}                                                                                                         M4A D à        D à                                                          €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 8 2 . m 4 a   AH}                                                                                                         M4A D          D                                                            €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 8 1 . m 4 a   AH}                                                                                                         MP3 D €        D €                                                          €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 6 0 . m p 3   a a                                                                                                          MP3 D à        D à                                                          €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 5 9 . m p 3   AH}                                                                                                         MP3 D @        D @                                                          €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 5 7 . m p 3                                                                                                                   MP3 D `        D `                                                          €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 5 4 . m p 3                                                                                                             
   MP3 D          D                                                            €ÂŸxlŸÿþA U D - 2 0 1 8 1 1 1 7 - W A 0 1 4 9 . m p 3   ors 

谢谢

戴斯蒙德

1 个答案:

答案 0 :(得分:0)

这是一个Perl代码,它将提取您感兴趣的所有文件名。

use strict;
use warnings;

my $filename = 'perlsongs.txt';
open(my $fh, $filename)
or die "Could not open file '$filename' $!";

my $row = <$fh>;

$row =~ s/\s+//g;


my @matches = ( $row =~ /[\w .-]+(?:\s*m\s*p\s*3|\s*m\s*4\s*a|\s*w\s*a\s*v)/g );

foreach(@matches) {
    print "$_\n";
}
print "\ndone\n";

perlsongs.txt是包含二进制数据的文件。

执行后,它应该打印出您要查找的所有文件名。这是脚本的实际输出。

AUD-20181117-WA0190.mp3
AUD-20181117-WA0188.m4a
AUD-20181117-WA0187.mp3
AUD-20181117-WA0182.m4a
AUD-20181117-WA0181.m4a
AUD-20181117-WA0160.mp3
AUD-20181117-WA0159.mp3
AUD-20181117-WA0157.mp3
AUD-20181117-WA0154.mp3

done

让我知道这是否对您有用。