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个结束括号
- [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
,您是指真正的重复字符串吗?不,它可以是任何值