正则表达式获取最后一个URL

时间:2016-02-25 07:54:06

标签: php regex preg-replace

我有:

stackoverflow.com/.../link/Eee_666/9_uUU/66_99U

/Eee_666/9_uUU/66_99U的正则表达式是什么?

Eee_6669_uUU66_99U是随机值

我该如何解决?

4 个答案:

答案 0 :(得分:2)

就这么简单:

$link = "stackoverflow.com/.../link/Eee_666/9_uUU/66_99U";
$regex = '~link/([^/]+)/([^/]+)/([^/]+)~';
# captures anything that is not a / in three different groups
preg_match_all($regex, $link, $matches);
print_r($matches);

请注意,虽然它会消耗任何字符,但期望/(包括换行符),因此您要么也要排除其他字符,要么只为您的格式提供引擎。
请参阅a demo on regex101.com

答案 1 :(得分:1)

您可以在此使用update来更加彻底。

\K

参见演示。

https://regex101.com/r/jC8mZ4/2

答案 2 :(得分:0)

如果你没有如何长度的字符串:

$string = stackoverflow.com/.../link/Eee_666/9_uUU/66_99U

$regexp = ([^\/]+$)

结果: group1 = 66_99U

小心它也可能捕获终点线

答案 3 :(得分:0)

对于这种要求,使用preg_split并结合array_slice更简单:

$url = 'stackoverflow.com/.../link/Eee_666/9_uUU/66_99U';
$elem = array_slice(preg_split('~/~', $url), -3);
print_r($elem);

<强>输出:

Array
(
    [0] => Eee_666
    [1] => 9_uUU
    [2] => 66_99U
)