我有以下字符串案例:
- 我的 $str = "Warehouse.13.s01e01.hdtv.xor.avi";
- 我的 $str = "Warehouse.13.01x01.hdtv.xor.avi";
- 我的 $str = "Warehouse.13.season01episode01.hdtv.xor.avi";
上述情况下的 delimiter( .
) 可以替换为_ - \s
. 现在为了匹配上述情况,我创建了以下正则表达式,它工作正常:
my $regex_object = qr{.*?\d{1,2}(?:e|edosipe)?[._\- x]?\d{1,2}(?:s|nosaes)?[._\- ]?(?=\d+)(.*)};
您可以看到我必须反转要处理的字符串,\d+
因为在后视中应该有绝对长度匹配,所以我将其转换为前瞻。
现在对于上述情况,输出Warehouse 13
是我需要的输出。
现在的问题是,如果我series name
不包含numbers(13,24)
我不希望我上面的正则表达式匹配并确保我使用了(?=\d+)
i,e ifs|season
前面是否有数字。
现在,如果我$str
的 is'how.i.met.your.mother.s03e13.hdtv.mkv'
它匹配上面的正则表达式和输出
how.i.met.your.mother.s0
现在,我不知道为什么即使在使用后视以及如何纠正它之后它仍然匹配这个字符串。