日期:2014-05-18  浏览次数:20514 次

问一个正则问题
Reader为HTML代码,HT为哈希表,里面存的是
href= "http://XXX.XXXX.com/XXX/(.*?) "> <div   name= "clientName "> <div     id=items   name=items   >

Regex   RRestID   =   new   Regex(HT[ "BeiJing_PageRestId "].ToString(),   RegexOptions.IgnoreCase   |   RegexOptions.Compiled);
Regex   RRestName   =   new   Regex(HT[ "BeiJing_PageRestName "].ToString(),   RegexOptions.IgnoreCase   |   RegexOptions.Compiled);
Regex   RRestUrl   =   new   Regex(HT[ "BeiJing_PageRestUrl "].ToString(),   RegexOptions.IgnoreCase   |   RegexOptions.Compiled);
            MatchCollection   MRestID   =   RRestID.Matches(Reader);
            MatchCollection   MRestName   =   RRestName.Matches(Reader);
            MatchCollection   MRestUrl   =   RRestUrl.Matches(Reader);

这样抓出来的数据可以得到MRestID.Count=10,但里面取出的数据是
href= "http://XXX.XXXX.com/XXX/XXXX "> <div   name= "clientName "> <div     id=items   name=items   >
这样的数据,并不是XXX/后面我要的数据,请问如何修改

------解决方案--------------------
-_-#,看了半天还是云里雾里的,为什么会这样用啊

你这样取出来的是一个集合
MatchCollection MRestID = RRestID.Matches(Reader);
集合中的元素肯定是
href= "http://XXX.XXXX.com/XXX/XXXX "> <div name= "clientName "> <div id=items name=items >
这样的,要得到XXX/后面的数据,这样

foreach (Match m in MRestID)
{
richTextBox2.Text += m.Groups[1].Value + "\n ";
}


搞不懂为什么要这样写正则,另外就是如果不是极其频繁的调用,不要加RegexOptions.Compiled这个参数,否则会适得其反