Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中非常困难的递归regexp_Php_Regex_Recursion_Split - Fatal编程技术网

PHP中非常困难的递归regexp

PHP中非常困难的递归regexp,php,regex,recursion,split,Php,Regex,Recursion,Split,我无法编写正则表达式,以允许我处理字符串,如: xxx [[ob1:ch1|val1[[ob2:ch2|val2]]val1|val2[[ob3:ch3|val3|val3bis]]val2[[ob4:ch4]]val2]] xxx 我的递归标记由以下部分组成:[[object:field | value1 | value2]] 2个开口支架 一个对象名 2分 一个字段名 可选管道及其值 第二个可选管道及其值 2个结束括号 在示例give abrove中,我希望得到如下结果: [ob1:

我无法编写正则表达式,以允许我处理字符串,如:

xxx [[ob1:ch1|val1[[ob2:ch2|val2]]val1|val2[[ob3:ch3|val3|val3bis]]val2[[ob4:ch4]]val2]] xxx
我的递归标记由以下部分组成:
[[object:field | value1 | value2]]

  • 2个开口支架
  • 一个对象名
  • 2分
  • 一个字段名
  • 可选管道及其值
  • 第二个可选管道及其值
  • 2个结束括号
在示例give abrove中,我希望得到如下结果:

  • [ob1:ch1 | val1[[ob2:ch2 | val2]]val1 | val2[[ob3:ch3 | val3 | val3bis]]val2[[ob4:ch4]]val2]]

    • ob1
    • ch1
    • val1[[ob2:ch2 | val2]]val1
    • val2[[ob3:ch3 | val3 | val3bis]]val2[[ob4:ch4]]val2
  • [[ob2:ch2 | val2]]
    • ob2
    • 甲烷
    • 瓦尔2
  • [[ob3:ch3 | val3 | val3bis]]
    • ob3
    • 甲烷
    • val3
    • val3bis
  • [[ob4:ch4]]
    • ob4
    • 甲烷

下面的regexp可以拆分每个标记
(?=\[\[((?:[^\[\]]+\[(?1)\]\]+)\]\]\]])
,但我无法分析和拆分每个管道。

Regex可能不是此项工作的正确工具。不会尝试使用Regex,你不能使用其他一些函数吗?通过重复
valN
,你是指真正的重复字符串吗?不,它可以是任何值RegEx可能不是此作业的正确工具。不会尝试使用RegEx,您不能使用其他函数吗?通过重复
valN
,您是指真正的重复字符串吗?不,它可以是任何值