欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

有趣的正则-案例实战讲解

程序员文章站 2022-04-19 16:08:25
...

案例1:

    $index = "users[info][name]";
    $count = preg_match_all('/(?:^[^\[]+)|\[[^]]*\]/', $index, $matches);
    print_r($matches);

结果:

Array
(
    [0] => Array
        (
            [0] => users
            [1] => [info]
            [2] => [name]
        )

)

讲解:
将表达式分为两部分 (?:^[^\[]+)\[[^]]*\],中间用|连接。
其中前段部分主体部分为 ^[^\[]+ 第一个 ^表示以后面[]字符域里面的字符开头,而字符域 ^\[ 表示不包括字符[的字符集合,+表示一个或多个。所以第一个部分表示,匹配不以[为开始的一个或多个字符,在上例中匹配项为'users'。其中() 代表捕获并且存放到内置变量中,第一个括号里东西放到$1;第二个括号中的东西放到$2; 第三个括号中的东西放到$3(?: Feb|Mar)代表分组但是不存放到内置变量中
后段部分