我想从电视连续剧的名称中提取剧集编号。

例如如果是“权力的游戏S06E01”,那么我应该得到01。

我正在尝试的是:


首先查看字符串是否包含类似“ S__E__”的内容(例如“黑名单S01E05”)
如果是,请查看“ E”或“ e”之后的内容,然后将其提取。


但是由于输入类型的不同,我可以使用不同的名称进行检查,例如:


黑名单S01E01
黑名单s01e01(小“ e”和“ s”)
黑名单S1E1
黑名单S01E01.mkv
Se7en S01E01


等等...

最佳答案

然后赞美正则表达式的功能:

\b(?i)S\d+E(\d+)(?i-)\b


请参见a demo on regex101.com

PHP中,这将是:

<?php

$data = <<<DATA
Blacklist S01E01
Blacklist s01e01 (small "e" and "s")
Blacklist S01E01.mkv
Se7en S01E01
DATA;

$regex = '~\b(?i)S\d+E(\d+)(?i-)\b~';
preg_match_all($regex, $data, $matches);
print_r($matches);
?>


并参见a demo on ideone.com

更新:要在jQuery/JavaScript中执行此操作,您需要更改内联修饰符:

\bS[\d.]+E(\d+)\b


请参见a demo on regex101.com(请注意修饰符!)。

10-07 17:56