#1 凌风



$pattern_map = array(
    ‘<{*([\s\S]+?)*}>’ => ,
    ‘<{(.?)}>’ => ,
    ‘(<{((?!}>).)
?)($[\w"'[]]+?).(\w+)(.?}>)’ => ‘$1$3['$4']$5’,

请教一下最后一行的这个开头为什么要用 (<{((?!}>).)
?),而不是直接用 (<{.*?)

2020-09-08 16:03:19

#2 jake

如果一行里面有两个<{}>,不加这个会匹配很多的。

2020-09-08 20:41:17

#3 凌风

问题是好像你加了(.*?}>)就表示遇到}>就已经结束了,不必用?!来排除,我测试了一下也没问题2020-09-09_00-27.jpg

2020-09-09 00:29:45

#4 jake

在线的匹配是js的,和php匹配不太一样。

我是直接用模板在php里面匹配的,单元测试了各种情况,这段应该就是应对多个标签同一行的情况,不过具体的测试用例已经不在了。

2020-09-09 07:32:10