正则表达式从最后的数值获取字符串

时间:2012-08-18 10:59:30

标签: php regex string

我有一些像下面的php字符串

abc-1987-mp3-songs
xyz-1999-india-mp3-songs
dec-2001-mp3-songs
ryu-2012-freemp3-songs

现在我希望这些字符串最后找到数字值,如下面的

  abc-1987
  xyz-1999
  dec-2001
  ryu-2012

请帮助我使用哪个正则表达式来执行此操作。感谢。

3 个答案:

答案 0 :(得分:0)

使用explode而不是正则表达式 例如: -

$str="abc-1987-mp3-songs";
$f=explode("-",$str);
echo $final_result=$f[0]."-".$f[1];

或者如果你想使用reg exp.then

<?php
    $str="abc-1987-mp3-songs";
     echo $f=preg_replace('/[^0-9]/','', $str); 
?>

上面的代码为您提供字符串的所有数字。

答案 1 :(得分:0)

这将匹配给定字符串的最后一次出现的数值:

([\w\d-]*-[\d]+)

这是链接:Regex

enter image description here

答案 2 :(得分:0)

好的,我看了一下(花点时间学习正则表达式 - 但同时):

$split = (preg_split('/(^.*?[0-9]+)\-?[^0-9]+/', 'foo-xyz-1999-india-mp3-songs', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY));
echo $split[0];//<--- foo-xyz-1999, just like you wanted

转储以foo-xyz-1999为第一个值的数组,这正是您所需要的。如果你想知道正则表达式的每个部分read it here

唯一的区别是,尽管整个字符串成为它自己的分隔符,但有两个分隔符(第一部分,总是以一系列数字结尾,其余字符串,不包含任何数字)