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

Php 从最后一个数值中获取字符串的正则表达式,php,regex,string,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 现在我想把这些字符串拆分,最后找到如下所示的数值 abc-1987-mp3-songs xyz-1999-india-mp3-songs dec-2001-mp3-songs ryu-2012-freem

我有一些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
现在我想把这些字符串拆分,最后找到如下所示的数值

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

请帮助我,哪个正则表达式可以用来做这件事。谢谢。

使用explode代替正则表达式 例如:-

$str="abc-1987-mp3-songs";
$f=explode("-",$str);
echo $final_result=$f[0]."-".$f[1];
或者如果您想使用reg exp

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


上面的代码给出了字符串的所有数字

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

([\w\d-]*-[\d]+)
这是链接:

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

$split=(preg\u split(“/(^.[0-9]+)\-?[^0-9]+/”,“foo-xyz-1999-india-mp3-songs”,-1,preg\u split\u DELIM\u CAPTURE;preg\u split\u NO\u EMPTY));

echo$split[0]//实际上,我没有任何想法来制作我自己的regex.split或select…您的输出称为selection notsplit@way2project:如果你想开发web应用程序,你迟早要学会:,当然,谷歌是一个很好的起点。还要知道,像和之类的网站允许您安全地练习,只有当数值始终位于第二位时,这才有效。他说“最后一个数字”,所以我假设可能会有多次出现……没有数字值可以出现在任何地方,比如abc-ddd-cerf-1987-mp3-free-songs。我想在最后找到一个类似于abc-ddd-cerf-1987的数值,但如果您想使用reg exp,请查看我编辑的代码。但是使用reg。exp您还将获得另一个附加的数字,如mp3(您还获得了3)。这就是为什么我建议你使用explode函数。它是preg\u match还是preg\u match\u all。你能给我完整的正则表达式模式吗。谢谢这在aaa-somthing-abc-1987的案例中不起作用。它只提供abc-1987。它工作正常,但如何使用它请帮助。我的字符串是$string,我使用了preg_match_all(“/([\w\d-]*-[\d]+)/g”,$string和$matches);echo$匹配项[1]。“
”;嗨,伊莱亚斯·范奥特格姆。多谢各位。工作正常。再次感谢。请花点时间阅读解释(我提供的链接),并查看我对您的问题的评论,以获得教程和沙盒的链接,在这些链接中,您可以了解正则表达式