我有这个exaple列表
Veep - Season 1 BDMux.torrent
Vegas S01e01-21.torrent
Velvet S01e13.torrent
Velvet.e10.torrent
Velvet_e01.torrent
Veronica Mars s01.torrent
Vicious S01e01-06.torrent
Victor Ros S01e01-06.torrent
Video.Game.High.School.S01e01-09.XviD.torrent
Vikings - Season 1 EXT.torrent
Vikings_S04e04.avi.torrent
我想要消除类似天鹅绒的线条。或velvet_并合并为一个,最后像这样打印
Veep
Vegas
Velvet
Veronica Mars
Victor Ros
Video Game High School
Vikings
如何使用正则表达式?
答案 0 :(得分:0)
要在一个正则表达式中做所有这些,我说是不可能的。但是,这个正则表达式
^(.*?)[ ._-]*(?:s\w*\s*\d+)?(?:e\d\d(?:-\d\d)?)?[\s.]*\w*?\.torrent(?:[\s\S]*\1.*$)*$
处理你向我们扔的东西;)。但是只有但 - 它无法移除Video.Game.High.School
等标题中的点。
并且 - 它需要对节目进行分组,例如在您的示例中(例如,所有Velvet
组合在一起)。这应该可以通过Notepad++
Edit>Line Operations>Sort Lines in Ascending
轻松解决。
它的作用是捕获一切到季节和/或剧集,允许可选格式并最终匹配.torrent
。然后它可选地匹配所有内容,直到可能重复捕获的第一个以及随后到达行尾的任何内容。重复最后一步,直到找不到匹配项。捕获组现在保存节目的名称,但正则表达式匹配节目的所有行。因此,用捕获替换整个匹配,每个节目只留下一个干净的条目。
这意味着当节目名称以另一个节目的完整名称开头时,它不会处理,例如American Crime
和American Crime Story
,因为第一个匹配第二个,因此保持匹配直到第二个结束。这可以通过在正则表达式的第二部分中包含季节/剧集的测试来修复,但我选择了这个来保持它更简单和更快。
所以,你在评论中说"正则表达式不需要是完美的"。嗯,这是一个为你完成大部分工作的人 - 但并不完美。
此致
修改强>
进行了一些更新并简化了正则表达式。如果您想要更具体的一个,那么这就是旧的:
^(.*?)[ ._]?(?:-? season \d+|(?:s\d\d)?(?:e\d\d(?:-\d\d)?)?)[\s.]*(?:bdmux|xvid|ext|avi)?\.torrent(?:[\s\S]*\1.*$)*$