PHP Regex可以获得两个标签之外的所有内容

时间:2016-10-20 06:47:55

标签: php regex

我有一个以下格式的字符串:

firstlayer{secondlayer;secondlayer,secondlayer};firstlayer{secondlayer;secondlayer}

我现在想要排除“{}”标签之间的所有值,以便我可以简单地用分号分解字符串。 - >我想获得所有第一层值。

编辑: 我的第一次尝试是这样的:

preg_match_all("(.*?)~\{\}~(.*?)", $string,$match);

但它似乎不起作用......

2 个答案:

答案 0 :(得分:1)

$str = 'firstlayer{secondlayer;secondlayer,secondlayer};firstlayer{secondlayer;secondlayer}';
if (preg_match_all('~(\w+)\{(.*?)\}~', $str, $m)) {
    print_r($m);
}

输出是:

Array
(
    [0] => Array
        (
            [0] => firstlayer{secondlayer;secondlayer,secondlayer}
            [1] => firstlayer{secondlayer;secondlayer}
        )

    [1] => Array
        (
            [0] => firstlayer
            [1] => firstlayer
        )

    [2] => Array
        (
            [0] => secondlayer;secondlayer,secondlayer
            [1] => secondlayer;secondlayer
        )

)

答案 1 :(得分:0)

您可以使用以下正则表达式将匹配项替换为空白字符串。 demo:

{[^}]*}

或者您可以直接在;(?=[^}]*(?:{[^{}]*})+)

上拆分