例如有这样一段html代码:
<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'> <a href='Article_Show.asp?ArticleID=1116' title='文档标题:最高人民法院关于规范行政案件案由的通知(法发[2004]2号)
文档作者:佚名
更新时间:2005-11-10 12:15:02
点击次数:1846' target='_blank'>最高人民法院关于规范行政案件案由的通知(法发[2004]…</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2005年11月10日</font>|1846]</td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'> <a href='Article_Show.asp?ArticleID=672' title='文档标题:关于加强广告执法办案协调工作的指导意见(试行)
文档作者:佚名
更新时间:2004-9-27 11:24:00
点击次数:1128' target='_blank'>山西6部新法规获省人大常委会通过</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2004年9月27日</font>|1128]</td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'> <a href='Article_Show.asp?ArticleID=506' title='文档标题:我国首部循环经济法规出台
文档作者:佚名
更新时间:2004-9-27 11:22:05
点击次数:1039' target='_blank'>我国首部循环经济法规出台</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2004年9月27日</font>|1039]</td></tr></table>
</td>
</tr>
</table>
我要获得像<a href=></a>这样格式中的连接地址和title(标题)
我将如何用正则表达式解析呢?
<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'> <a href='Article_Show.asp?ArticleID=1116' title='文档标题:最高人民法院关于规范行政案件案由的通知(法发[2004]2号)
文档作者:佚名
更新时间:2005-11-10 12:15:02
点击次数:1846' target='_blank'>最高人民法院关于规范行政案件案由的通知(法发[2004]…</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2005年11月10日</font>|1846]</td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'> <a href='Article_Show.asp?ArticleID=672' title='文档标题:关于加强广告执法办案协调工作的指导意见(试行)
文档作者:佚名
更新时间:2004-9-27 11:24:00
点击次数:1128' target='_blank'>山西6部新法规获省人大常委会通过</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2004年9月27日</font>|1128]</td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><img src='images/article_common.gif' alt='普通文档'> <a href='Article_Show.asp?ArticleID=506' title='文档标题:我国首部循环经济法规出台
文档作者:佚名
更新时间:2004-9-27 11:22:05
点击次数:1039' target='_blank'>我国首部循环经济法规出台</a><img src='images/hot.gif' alt='热点文档'></td><td align=right>[佚名|<font color=#999999>2004年9月27日</font>|1039]</td></tr></table>
</td>
</tr>
</table>
我要获得像<a href=></a>这样格式中的连接地址和title(标题)
我将如何用正则表达式解析呢?
用request.querystring.get(id) 可以获得此标题了
------------------------
个人blog(http://blog.csdn.net/shixin1198)欢迎访问
我想通过代码获取某个网业上的标题和连接地址,方便用户,用户不想手工输入
我只知道他的html代码,我要解析出html代码中的<a href></a>里面的href='....' 和 title='...'我要获取....中的内容
我对正则表达式不是太了解,谢谢
MatchCollection mc = Regex.Matches(yourStr, @"<a[^>]*?href='(?<url>[^']*?)'[^>]*?title='(?<title>[^']*?)'[^>]*?>", RegexOptions.IgnoreCase);
foreach(Match m in mc)
{
richTextBox2.Text += m.Groups["url"].Value + "\n"; //链接
richTextBox2.Text += m.Groups["title"].Value + "\n"; //标题
}
\s就是空格(space),\s+表示在标签和属性间至少有一个空格,多了随便.
.是任意一个字符,*表示0到多个,*?组合表示此匹配为惰性匹配(遇到后面匹配成功此匹配即使仍旧成功也要结束).*?加上后面的href就是中间可以有0到多个任意字符,知道遇见href标记后停止匹配,其实这里有问题的,就是有些字符比如>是不能出现在属性名中的,这里没判断.
后面的()是一个组,?<chr>给此组一个名字叫chr,['\"]必须有一个'或"标记属性内容的开始.
(?<loc>.*?)这个就是连接地址了.\k<chr>逆向引用chr组内容,保证属性的结束标记和开始标记匹配.
正则比较好学的,.net帮助上介绍的就不错,记在本子上,刚开始可能不理解他的术语,什么原子0宽度断言啊,什么后发断言的.有空就看看,多使用就ok了.
.net的正则是基于非确定自动机的,虽然不太难,但基本可以解决大多的分析和解释性问题
MatchCollection mc = Regex.Matches(yourStr, @"<a[^>]*?href=(['""])?(?<url>[^'""\s>]*)\1?[^>]*?title=(['""])(?<title>[^'""]*?)['""][^>]*?>", RegexOptions.IgnoreCase);
foreach(Match m in mc)
{
richTextBox2.Text += m.Groups["url"].Value + "\n"; //链接
richTextBox2.Text += m.Groups["title"].Value + "\n"; //标题
}