用RegEx Python解析文件名

2024-04-29 01:50:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从你下载电影的名字中找出电影的“真实”名字。 例如,我

Star.Wars.Episode.4.A.New.Hope.1977.1080p.BrRip.x264.BOKUTOX.YIFY

希望得到

^{pr2}$

所以我用这个正则表达式:

.*?\d{1}?[ .a-zA-Z]*

这很好,但只适用于有数字的电影,比如《钢铁侠3》。 我希望能拍到像《星际》这样的电影

Interstellar.2014.1080p.BluRay.H264.AAC-RARBG

我现在得到

Interstellar 2

我试了好几种方法,已经花了很多时间在上面了,但是我想问问你们对如何做这件事有没有什么建议/想法/建议。。。 谢谢!在


Tags: new电影数字名字建议starx264星际
3条回答

给出您的示例,并假设您总是在1080p中下载(或知道该字段的值):

x = 'Interstellar.2014.1080p.BluRay.H264.AAC-RARBG'
y = x.split('.')
print " ".join(y[:y.index('1080p')-1])

忘了正则表达式吧(至少现在!)和固定的场地布局一起工作。找到一个你知道的字段(1080p),然后删除你不想要的信息(年份)。重新组合结果,你会得到“星际”和“星球大战第四集一个新的希望”。在

\.(?=.*?(?:19|20)\d{2}\b)|(?:19|20)\d{2}\b.*$

re.sub试试这个。见演示。在

https://regex101.com/r/hR7tH4/10

^{pr2}$

下面的regex可以工作(假设格式类似于moviename.year.1080p.anything或{}:

.*(?=.\d{4}.*\d{3,}p)

Regex example(尝试单元测试以查看regex的运行情况)

说明:

Regular expression visualization

相关问题 更多 >