- 论坛徽章:
- 3
|
chenhao392 发表于 2015-02-01 07:56 ![]()
不知楼主需求,能否先简化问题?
比如,弄个计数器,同时创建一个工作变量。 从左向右substr。出现左括号 ...
简化问题如下:
双括号内容(用正则捕获)调用其实现函数:$y = ~s/\{\{([^\{\}]+)\}\}/&Bracket2($1)/ge ;
叁括号内容(用正则捕获)调用另一函数实现其功能:$z = ~s/\{\{\{([^\{\}]+)\}\}\}/&Bracket3($1)/ge ;
对于你说的双括号(或叁括号)单一情况可以用计数解决匹配问题:
{{A..{{B..b}} C..{{D..{{E..e}}F.. d}} a}}括号阶度为3即{{E..e}}为第3阶可以用计数器解决
同样,单一有叁括号情况:
{{{A..{{{B..b}}} C..{{{D..{{{E..e}}}F.. d}}} a}}}也可以用计数器解决,
但是双括号与叁括号混合时,就比较难解决,因为叁括号{{{A.. {{B..b}}}}}可能被误认为是双括号即{{{(A.. {{B..b}}})}}对于最后结尾'}}}}}'是前3'}}}'后2'}}',还是前2'}}'后3'}}}',正则表达式无法分清楚。
以上内容,不知我描绘清楚了吧?
谢谢各位大侠多出招!
minirain |
|