正则表达式匹配可能没有结束分隔符的项目

时间:2013-06-02 23:16:20

标签: php regex

我需要在下面的示例网址中同时匹配 test1 test3

http://www.domain.com/:test1/test2/:test3

这个正则表达式没有这样做:

(:.*?/?)

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

是你在寻找什么?

/:([^\/]+)/i

答案 1 :(得分:1)

这个会做:

$str = 'http://www.domain.com/:test1/test2/:test3';
preg_match_all('~:\w+~', $str, $matches);
var_dump($matches);

输出:

array(1) {
  [0] =>
  array(2) {
    [0] =>
    string(6) ":test1"
    [1] =>
    string(6) ":test3"
  }
}

说明:

~    starting delimiter
:    a colon
\w   a *word* char
+    as many of them as possible
~    ending delimiter

答案 2 :(得分:1)

我认为这可能适合你:

$string = 'http://www.domain.com/:test1/test2/:test3';
preg_match_all('#:.*?/|:.*#i', $string, $matches);
var_dump($matches);

答案 3 :(得分:0)

有一个小教程解释了正则表达式引擎如何解释?和*在这里:

http://www.regex-engine.com/demo.html#repetition