使用preg_match从字符串中打印出某些文本

时间:2012-02-01 21:25:39

标签: php preg-match

我想从.torrent名称中获取某个字符串,但我只能从中得到它:

array
  0 => string 'e' (length=1)

我做错了什么?这是我使用的preg_match

preg_match('/[S(0-9)E(0-9)]/i', 'True.Blood.S04E12.SWESUB.PDTV.XviD-DSMEDiA', $matches);

提前致谢。

3 个答案:

答案 0 :(得分:0)

删除方括号并将它们放在数字周围,然后在它们后面添加+(表示1或更多)。通过这种方式,您可以获得整个S ## E ##字符串,以及单独的数字:

preg_match('/S([0-9]+)E([0-9]+)/i', 'True.Blood.S04E12.SWESUB.PDTV.XviD-DSMEDiA', $matches);
print_r($matches);
/* output:
Array
(
    [0] => S04E12
    [1] => 04
    [2] => 12
)
*/

您也可以将[0-9]替换为\d

答案 1 :(得分:0)

我建议使用:

preg_match('/S[0-9]{1,2}E[0-9]{1,2}/i', 'True.Blood.S04E12.SWESUB.PDTV.XviD-DSMEDiA', $matches);

它出来了:

array(1) { [0]=> string(6) "S04E12" } 

答案 2 :(得分:0)

以下正则表达式将返回相应的字符串。

/* Pattern:  /\d{2}E\d{2}/   */
preg_match_all('/\d{2}E  \d{2}/', '{{your data}}', $arr, PREG_PATTERN_ORDER);
/*Result*/
Array
(
    [0] => Array
        (
            [0] => 04E12
        )

)