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

帮忙分析一条正则表达式,多谢!
麻烦各位兄台帮小弟分析一下下面博客网址打开后的一条正则表达式
http://www.imkevinyang.com/2009/07/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D%E5%B5%8C%E5%A5%97html%E6%A0%87%E7%AD%BE.html
博主所给的正则表达式为:
<(?<HtmlTag>[\w]+)[^>]*\s[iI][dD]=(?<Quote>["']?)footer(?(Quote)\k<Quote>)["']?[^>]*(/>|>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>)
测试可通过。

目前小弟的需求是要去掉对id的判断,奖表达式改为:
<(?<HtmlTag>itag)[^>]*(/>|>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>)
但运行出现死循环状态,即运行一直停不下。
请各位帮忙看下是什么原因?
正则表达式

------解决方案--------------------
 string str = File.ReadAllText("D:\\1.txt", Encoding.Default);
            var ary = Regex.Matches(str, @"(?is)<div((?<g><div)
------解决方案--------------------
(?<-g></div>)
------解决方案--------------------
(?!</?div).)*</div>").OfType<Match>().Select(t => t.Value).ToArray();
          
------解决方案--------------------
(?is)<(div)\b[^>]*>(?><\1[^>]*>(?<v>)
------解决方案--------------------
</\1>(?<-v>)
------解决方案--------------------
(?:(?!</?\1\b).)*)*(?(v)(?!))</\1>