我有一些从便携式媒体播放器中获得的数据。我正在尝试从数据中提取.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
谢谢
戴斯蒙德
答案 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
让我知道这是否对您有用。