110,538
社区成员
发帖
与我相关
我的任务
分享
{if(name == "")}
{elseif(name == "")}
{else}
{/if}
{if(name == "1")}
fsc
{elseif(name == "2")}
{if(name == "1")}
ds2
{elseif(name == "3")}
xk00
{else}
25s
{/if}
{else}
df
{/if}
{elseif(name == "")}
{else}
//递归方法
private void getNesting(string src, Regex reg, List<string> list)
{
MatchCollection mc = reg.Matches(src);
foreach (Match m in mc)
{
list.Add(m.Value);
src = m.Value.Remove(m.Value.Length - 1, 1);
if (reg.IsMatch(src))
{
getNesting(src, reg, list);
}
}
}
//调用
string test = @"{if(name == ""1"")}
fsc
{elseif(name == ""2"")}
{if(name == ""1"")}
ds2
{elseif(name == ""3"")}
xk00
{else}
25s
{/if}
{else}
df
{/if}";
List<string> list = new List<string>();
Regex reg = new Regex(@"(?is){if\(name\s*==(?>{if\(name\s*==(?<o>)|{/if}(?<-o>)|(?:(?!{/?if).)*)*(?(o)(?!)){/if}");
getNesting(test, reg, list);
foreach (string s in list)
{
richTextBox2.Text += s + "\n====================\n";
}
{if(name == "1")}
fsc
{elseif(name == "2")}
{if(name == "1")}
ds2
{elseif(name == "3")}
xk00
{else}
25s
{/if}
{else}
df
{/if}
{if(name == "1")}
ds2
{elseif(name == "3")}
xk00
{else}
25s
{/if}
Regex reg = new Regex(@"(?is){if\(name\s*==(?>{if\(name\s*==(?<o>)|{/if}(?<-o>)|(?:(?!{/?if).)*)*(?(o)(?!)){/if}");
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n================\n";
}