有个正则表达式re = /<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,是为了匹配最内层子模板,如:
<tpl>
<p>Name:{name}</p><p>Kids: <tpl for="kids">
<tpl if="age == 1"><p>{name}</p></tpl></tpl></p>
</tpl>我想问下为什么要加上\2
/<tpl\b[^>]*>((?:([^<]+)|<(?!tpl\b[^>]*>))*?)<\/tpl>/
这样写应该也没问题呀,求教。PS:我改过之后使用regexbuddy测试不通过,用match tracer测试可行,但效率极低,要等好久才匹配成功。语法上看不出什么问题,所以我怀疑是哪里引起的效率问题,望高手解答解我心中困惑。