【发布时间】:2017-08-04 00:48:01
【问题描述】:
添加 Regex101 网址: https://regex101.com/r/7Pd1ri/1/
我已经解决这个问题大约 3 个半小时了。
我终其一生都无法弄清楚我做错了什么。我非常接近让它完美运行,但我不知道如何检查{/IF}的第一次出现
我的正则表达式:
{IF\s*([^}]+)}([\s\S]+)(?:{\/ELSE})([\s\S]+){\/IF}
正在解析的文件:
{IF !isLoggedIn}
<a href="/sign-in/">Sign In</a>
{ELSE}
Welcome back, {>username}!<br />
{# students}
<li>{#>last_name}, {#>first_name}</li>
{/#}
{/IF}
{IF isLoggedIn}
Beta Testing...
{/IF}
由于某种原因,正则表达式一直捕获到第二个 {/IF} 作为 ELSE 的主体
【问题讨论】:
-
这是什么语言?
-
它的自定义。我正在尝试让 REGEX 解析 IF ELSE。
-
关于语言的问题是相关的。有各种正则表达式引擎,它们的语法和功能都不同。您使用的正则表达式的风格是完全相关的,并且回答的能力需要那个细节。如果您已经编写了自己的正则表达式引擎(其自定义),那么您需要将其提供给这里的所有人或自己解决问题。
-
(1) 你需要了解贪心匹配和非贪心匹配的区别。 (2) 你写这个模板引擎的目的是什么?如果是出于爱好或学术目的,那很好。但除此之外,我强烈建议您采用现成的解决方案,例如车把或 nunjucks。
-
“由于某种原因,正则表达式一直捕获到第二个
{/IF}” 请参阅{IF\s*RegExp。预期的结果是什么?
标签: javascript regex regex-group