当前位置:  开发笔记 > 编程语言 > 正文

正则表达式匹配{if cond} foo {else} bar {/ if}

如何解决《正则表达式匹配{ifcond}foo{else}bar{/if}》经验,为你挑选了1个好方法。

我很难丢掉我不想要的表达式,并保留我所做的位.

问题是 - 给定输入字符串:

{if cond}foo{else}bar{/if}

我想要:

0: {if cond}foo{else}bar{/if}
1: cond
2: foo
3: bar

并为输入字符串:

{if cond}foo{/if}

我想要:

0: {if cond}foo{else}bar{/if}
1: cond
2: foo
3: 

我目前得到的正则表达式如下:

\{if ([a-z0-9]+)\}([^\{]*?)(((?:\{else\})?)(.*?)?)\{/if\}

我收到以下数据:

0: {if cond}foo{else}bar{/if}
1: cond
2:
3: foo{else}bar
4:
5: foo{else}bar

这将需要进一步解析该foo{else}bar位以获得相应的值.

我的正则表达式是否近在咫尺?

我不太关心可能会运行的数据类型 - 包括{在if语句的主体中允许打破正则表达式.值的foobar可以是任何不包括a的值{.

谢谢,

大教堂



1> Diadistis..:

这应该工作:

{if\s+([^}]*)}([^{]*)(?:{else}([^{]*))?{/if}

根据您的需要逃脱它

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有