0

我需要在下面的示例 URL 中匹配test1test3 :

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

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

(:.*?/?)

有什么想法吗?

4

4 回答 4

1

那是你要找的吗?

/:([^\/]+)/i
于 2013-06-02T23:23:53.023 回答
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
于 2013-06-02T23:24:30.047 回答
1

我认为这可能对你有用:

$string = 'http://www.domain.com/:test1/test2/:test3';
preg_match_all('#:.*?/|:.*#i', $string, $matches);
var_dump($matches);
于 2013-06-02T23:27:09.560 回答
0

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

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

于 2013-06-02T23:48:51.387 回答