我有:
stackoverflow.com/.../link/Eee_666/9_uUU/66_99U
/Eee_666/9_uUU/66_99U
的正则表达式是什么?
Eee_666
,9_uUU
和66_99U
是随机值
我该如何解决?
答案 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)
答案 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
)