我需要在下面的示例 URL 中匹配test1和test3 :
http://www.domain.com/:test1/test2/:test3
这个正则表达式没有这样做:
(:.*?/?)
有什么想法吗?
那是你要找的吗?
/:([^\/]+)/i
这个会做:
$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
我认为这可能对你有用:
$string = 'http://www.domain.com/:test1/test2/:test3';
preg_match_all('#:.*?/|:.*#i', $string, $matches);
var_dump($matches);
有一个小教程解释了正则表达式引擎是如何解释的?和这里: