【发布时间】:2012-11-22 10:28:32
【问题描述】:
我正在使用专有语言实现经典的if, else, endif。
鉴于我有下面的字符串,我想找到[!--@Else--] 语句,但只定位[!--@If--]...[!--@EndIf--] 块内的NOT 语句。所以我想要ifs 在匹配else之前打开和关闭偶数个...
Lorem ipsum [!--@If(1=1)--] 一个是 [!--@If(2=1)--] 2 不是 1 [! - @别的 - ] 所以这样做 [! - @万一 - ] [! - @别的 - ] 1 不是 1 [! - @万一 - ] 和别的东西
在本例中,我想定位第二个 else - 而不是第一个,因为它位于 if/endif 块内。
我现在已经花费了无数个小时进行消极和积极的回顾,但无法让它发挥作用!?
【问题讨论】:
-
[!--@Else--]没有出现在[!--@If--]...[!--@EndIf--]块内。您是指[!--@Else--]的最外层出现吗? -
@Asad - 是的,当然。从最外面的 if/else 内部开始,找到不在嵌套 if/else 内部的 else。
-
哪种语言...?正则表达式的实现因语言而异
-
你试过“平衡组”:blog.stevenlevithan.com/archives/balancing-groups 吗?本文后面的示例似乎有助于解决您的问题。
标签: .net regex regex-lookarounds