2013-02-02 45 views
0

我希望我的PHP脚本搜索文件夹中的文件,并且我希望ReGEX只从它获取主文件名。ReGEX只选择TVShow名称

这些文件是带有fansub组的TVShows等,但我只需要显示名称。

[Final8]Nazo no Kanojo X 01-13 + OVA (BD 10-bit 1920x1080 x264 FLAC) 
[Final8]Nazo no Kanojo X 01-13 + OVA (BD 10-bit 1280x720 x264 AAC) 
[HorribleSubs] OreShura - 05 [1080p].mkv 
[HorribleSubs] OreShura - 05 [720p].mkv 
[Hatsuyuki]_Naruto_Shippuuden_-_298_[720p][3FF2ABFE].mp4 
[Commie] Mondaiji-tachi ga Isekai kara Kuru Sou Desu yo - 04 [18B50CAF].mkv 
[FFF] Maoyuu Maou Yuusha - 05 [E84974F0].mkv 
[Commie] Chihayafuru 2 - 04 [AB85B68E].mkv 
[gg][email protected]_-_04_[4D5B88AF].mkv 
[Nutbladder] JoJo's Bizarre Adventure - 17 
[UTW]_Shinsekai_Yori_-_18_[h264-720p][FAC060C0].mkv 

我想在括号[]和像集数和等等等等 文件名的所有其余部分去掉字幕组的名字,我想只是主文件名像谜没有彼女,我女友与青梅竹马的惨烈修罗场,Naruto_Shippuuden(或更好的火影忍者疾风传)等等。

我试着自己做一个REGEX,但它不好,任何帮助将不胜感激,如果可能的话,请看看你是否也可以评论什么是ReGEX的部分做什么,就像我可以学习的那样。

回答

0

这个正则表达式会给你标题,但它看起来不完美。它的名字中仍然会出现任何破折号和下划线。

(?<=])[^\.][\D]+ 

下面是使用一些您所提供的字符串的工作示例:http://fiddle.re/hz9b

那么你可以做第二遍,以去除其中的任何不想要的字符。

+0

尝试它在RegExr,它似乎正在工作,但有两个问题: 正如你刚才所说,文件名仍然有破折号和下划线,如果可能的话,它可以在相同的正则表达式中删除?否则我会在某种程度上在php中使用str_replace 第二个问题是,如果它以字母开头,它也选择括号中的CRC代码 请点击这里[link](http://regexr.com?33kq9) PS:你如何在评论中添加换行符?在结尾处有两个空格并按Shift + Enter不起作用 – user1972802

+0

感谢所有的帮助,只是在命中并尝试执行后得到了所有的结果,我使用的最终ReGex是 '(?<=])[^ \。] [ \ D] + [^ \ d \ s _-] {4}' 并且必须使用更多的PHP函数去除空格和下划线,但现在全部排序,非常感谢您的帮助.....如果您不记住,你能否解释一下你建议的ReGex的每个部分都会做什么?我只有70%的理解 – user1972802

+0

是的,当然!看看这个网站,这非常有用。 http://www.regex101.com/r/lR2sQ5 – Michael