从字符串中提取特定字符

时间:2016-07-17 14:07:54

标签: javascript php jquery regex

我想从电视剧的名字中提取剧集编号。

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

我正在尝试的是:

  1. 首先查看字符串是否包含“S__E __”之类的内容(例如“黑名单 S01E05 ”)
  2. 如果是,则查看“E”或“e”之后的内容,然后将其解压缩。
  3. 但是由于输入类型的变化,我可以得到不同的名称来检查:

    1. 黑名单S01E01
    2. 黑名单s01e01(小“e”和“s”)
    3. 黑名单S1E1
    4. 黑名单S01E01.mkv
    5. Se7en S01E01
    6. 依旧......

2 个答案:

答案 0 :(得分:8)

赞美正则表达式的力量然后:

\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(并注意修饰符!)。

答案 1 :(得分:2)

试一试:

<?php

$movie = 'Game.Of.Thrones.S01E01.mkv';

$exp = "/([Ss][0-9]+)([Ee])([0-9]+)/";

preg_match_all($exp, $movie, $result);

echo "<pre>";
var_dump($result[count($result) - 1][0]);
echo "</pre>";

?>