表达式中有两个或多个匹配项

时间:2010-09-27 04:49:09

标签: php regex

是否可以进行两次文字匹配 - /123/123/123?edit

我需要匹配123123123edit

对于第一个(123,123,123):模式是 - ([^\/]+)
对于第二个(编辑):模式是 - ([^\?=]*$)

是否可以在一个preg_match_all函数中匹配,或者我需要执行两次 - 一次针对一种模式,第二次针对一种模式?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过一次preg_match_all电话执行此操作:

$string = '/123/123/123?edit';
$matches = array();
preg_match_all('#(?<=[/?])\w+#', $string, $matches);

/* $matches will be:
Array
(
    [0] => Array
        (
            [0] => 123
            [1] => 123
            [2] => 123
            [3] => edit
        )

)
*/

http://www.ideone.com/eb2dy

中查看此操作

模式((?<=[/?])\w+)使用lookbehind断言斜杠或问号必须位于单词字符序列之前(\w是等效的shorthand class[a-z0-9_])。