A Yacc grammar for HTML http://www.di.unito.it/mail_archive/YACCHTML/0000.htmlAn Elementary HTML Parser http://www.codeproject.com/csharp/HTMLParser.asp
or getGotDotNet User Sample: SgmlReader 1.1 http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B90FDDCE-E60D-43F8-A5C4-C3BD760564BC
http://www.di.unito.it/mail_archive/YACCHTML/0000.htmlAn Elementary HTML Parser
http://www.codeproject.com/csharp/HTMLParser.asp
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B90FDDCE-E60D-43F8-A5C4-C3BD760564BC
<TABLE> 这种标签的字符串, 取得它们的内容, 起始位置就是"<A...", 结束位置就是再找到一个"/A>"然后再分析<a 里面的各个属性的名称和值,,做起来也很有意思可惜偶有其它东东要忙
如从 URL 提取协议和端口号
String Extension(String url) { Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/", RegexOptions.Compiled); return r.Match(url).Result("${proto}${port}"); }
实际上html也是门语言,它也有词法分析器,如果不闲麻烦,可以做个简单点的词法分析器,来实现你的这些功能,这也不是很难的,只是有点麻烦。正则表达式的话只要你的表达式精确,应该是没有问题的。
for (var iImgCounter = 0; iImgCounter < images.length; iImgCounter++) {
var imgTmp = images(iImgCounter);
var urlTmp = imgTmp.href;.....