正则表达式捕获分隔符之间的每一点

时间:2017-08-22 12:55:10

标签: php regex

我想在给定的分隔符(斜杠)之间捕获URL中的所有组,但似乎无法找到解决方案,因为完全匹配始终包含分隔符。

示例:

http://www.example.com/**captureme**/**capturemetoo**/**capturemeaswell**/notme.php

如果我使用简单的正则表达式,例如#\/(.*?)\/#,我会得到#34; captureme"和" capturemeaswell"但我很遗憾" capturemetoo"。

困难在于捕获的块的长度可能会有所不同,例如我们也可以:

http://www.example.com/group1/group2/group3/group4/group5/page.php

每个群体都需要被捕获。

1 个答案:

答案 0 :(得分:1)

你可以通过以下方式完成

$re = '/([^\/]+\/)/';
$str = 
'http://www.example.com/group1/group2/group3/group4/group5/page.php';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
// pop the first 2 matches
var_dump(array_slice($matches,2));

它会匹配http和域,但可以使用切片

删除

online compiler

中查看