首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配regex中嵌套的"if“语句?(使用拼音)

如何匹配regex中嵌套的"if“语句?(使用拼音)
EN

Stack Overflow用户
提问于 2021-09-06 01:02:09
回答 1查看 86关注 0票数 3

我用的是红宝石。我正在寻找匹配这个的外部"if“组:

代码语言:javascript
复制
{#if x > 10}
    <p>{x} is greater than 10</p>
    {#if 5 > x}
        <p>{x} is less than 5</p>
    {/if}
{/if}

到目前为止,我得到的是这个正则表达式:

代码语言:javascript
复制
\{#if(.*)}(.|\n)*?\{\/if\}

但这只匹配第一条/if语句,而不是最后一条(参见https://rubular.com/r/4l89GlANV9AVCQ)。有什么想法吗?

(我尝试了我在Stack Overflow:https://rubular.com/r/7a4PYTtxFQftob上看到的递归正则表达式匹配器,但我正在努力使其适用于上面的情况)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-06 02:43:45

它基本上与您链接到的平衡括号的正则表达式相同,但由于这里的标记是多个字符而不是单个字符,您需要使用负先行模式,而不是简单的否定字符类,以确保中间的匹配字符不是平衡构造的标记的一部分:

代码语言:javascript
复制
{#if.*?}(?>(?!{(?:#if.*?|\/if)}).|\g<0>)*{\/if}

演示:https://rubular.com/r/7BU2FStPEP34W4

请注意,您应该使用m选项启用MULTILINE模式,以便.匹配换行符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69068240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档