日期:2014-05-17  浏览次数:20458 次

求一个嵌套的正则表达式
HTML代码如下
HTML code

<div>{ id="a" /}</div>
<div>{ id="{ id="c" /}" /}</div>



我需要依次匹配{ id="a" /}、{ id="c" /}、{ id="{ id="c" /}" /},当有嵌套的情况时,需从里到外匹配,匹配成功时可将内容替换成别的字符。

不知道表达得清不清楚,望各位不吝赐教~


------解决方案--------------------
{((?<o>{)|(?<-o>})|.)*?(?(o)(?!))}
------解决方案--------------------
递归方法
C# code
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);

                    }

                }

            }