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


Regex For Get Last URL

我有:

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

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

Eee_6669_uUU66_99U 是随机值

我该如何解决?

就这么简单:

$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);

请注意,尽管它会吃掉任何期望/字符(包括换行符),因此您要么也想排除其他字符,要么仅向引擎提供格式的字符串。
观看有关 regex101.com 的演示。

你可以

在这里使用'K来使我更彻底。

stackoverflow'.com/.*?/link/'K([^/'s]+)/([^/'s]+)/([^/'s]+)

请参阅演示。

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

如果你不知道字符串的长度如何:

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

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

结果: group1 = 66_99U

小心它也可能捕获末端线卡特

对于这种要求,使用起来更简单,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
)