在PHP中非常困难的递归正则表达式

时间:2017-02-17 15:17:31

标签: 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个右括号

在示例中,我想得到类似的东西:

  • [[OB1:CH1 | VAL1 [[ob2的:CH 2 | VAL2]] VAL1 | val2的[[OB3:CH 3 | VAL3 | val3bis]] val2的[[OB4:CH 4]] VAL2]

    • OB1
    • CH1
    • VAL1 [[ob2的:CH 2 | VAL2]] VAL1
    • val2的[[OB3:CH 3 | VAL3 | val3bis]] val2的[[OB4:CH 4]] val2的
  • [[ob2的:CH 2 | VAL2]]
    • OB2
    • CH 2
    • val2的
  • [[OB3:CH 3 | VAL3 | val3bis]]
    • OB3
    • CH3
    • VAL3
    • val3bis
  • [[OB4:CH 4]]
    • OB4
    • CH 4

以下正则表达式可以拆分每个标记(?=\[\[((?:[^\[\]]+|\[\[(?1)\]\])+)\]\]),但我无法分析和拆分每个标记。

0 个答案:

没有答案