如何使用Regex处理模板并忽略转义字符?

时间:2014-10-29 22:55:22

标签: javascript regex

我一直在编写模板处理器,我决定修改它以支持我计划的新功能。其中一个功能是忽略转义字符。不幸的是,我不知道我在做什么(这是一项学习努力)。

首先,我编写了一个正则表达式来处理这个测试字符串,使用负向前瞻。但它似乎没有正常工作 - 它会占领领先的空间,我不知道为什么。如果第一个括号中只有一个反斜杠,而不是第一个和最后一个括号,它也会正常处理字符串。

Lorum \{#variable} ipsum {#variable\} dolor \{#variable} ismet {#variable} lorum ipsum.

这是使用的表达式:

(?![\\])[^\\][{}]#([^{}]+)}

如果使用纯正则表达式不容易做到这一点,我使用JavaScript,所以其他选项肯定是开放的。但是,我不想使用模板引擎,因为这是一个教育项目。

这个相同的代码将被用作其他几个匹配的基础,因此重要的是它也可以用于{%RandomOne|RandomTwoWith{#var}|RandomThree}和(虽然我知道这更复杂,所以理想情况下它会是单独处理){?if 1=1}First {#var}{?elseif 1=2}{%RandomOne|RandomTwoWith{#var}|RandomThree}{?else}Blank{?endif}

我完全清楚这种正则表达式的使用可能是次优的,我很高兴(事实上,渴望)听到一种更有效的方法来处理这些数据。在这种情况下,似乎是if语句是最复杂的。

0 个答案:

没有答案