PHP正则表达式;提取字符串的最后一部分

时间:2014-03-21 10:49:04

标签: php regex

我的电子表格中的列包含以下数据:

5020203010101/FIS/CASH FUND/SBG091241212

我需要在转发斜杠(/)之后提取字符串的最后一部分,即;的 SBG091241212

我尝试了以下正则表达式,但它似乎不起作用:

\/.*$

任何想法?

7 个答案:

答案 0 :(得分:3)

试试这个:

'/(?<=\/)[^\/]*$/'

您当前的REGEXP失败的原因是因为您的.*指令也匹配斜杠,因此它会锚定到第一个斜杠并提供其后的所有内容(FIS / CASH FUND / SBG091241212)。

答案 1 :(得分:1)

使用substr()strrpos()作为背后的目标。

echo substr($str,strrpos($str,'/')+1); //"prints" SBG091241212

Demo

答案 2 :(得分:1)

如果没有reg ex:

,你可以这样做
<?php

echo end(explode('/', '5020203010101/FIS/CASH FUND/SBG091241212'));

?>

答案 3 :(得分:1)

您需要使用括号指定匹配组才能提取内容。

preg_match("/\/([^\/]+)$/", "5020203010101/FIS/CASH FUND/SBG091241212", $matches);

echo $matches[1];

答案 4 :(得分:1)

这将做一个积极的lookbehind并匹配一个不包含斜杠的值

像这样

[^\/]*?(?<=[^\/])$

这只会突出显示匹配。即网址的最后一部分

演示: http://regex101.com/r/pF8pS2

答案 5 :(得分:0)

你可以爆炸&#39;字符串:

$temp = explode('/',$input);
if (!empty($temp)){
    $myString = $temp[count($temp)-1];
}

答案 6 :(得分:0)

您也可以使用:

$string = '5020203010101/FIS/CASH FUND/SBG091241212';
echo basename($string);

http://www.php.net/manual/en/function.basename.php