您的位置:首页 > Web前端 > HTML

正则表达式获取HTML标记中的内容。(注:如果内容中含有回车符,请查看第三个例子)

2007-01-25 17:54 567 查看
//=====================Begin1========================
//试验字符串
string strTmp = string.Empty;
//正则表达式
string tmpStr = string.Empty;

//取出指定HTML标记中的匹配项的值RegexOptions.IgnoreCase忽略大小写,RegexOptions.Multiline忽略多行显示,
//tmpStr = "<title>([^<]*)</title>" //获取<title>之间内容

strTmp = @"<add key='ConnectionString' value='server=localhost;database=数据库名;uid=sa;pwd=;pooling=true'/>";
//获取“database=”与“;”号之间的字符串:database=(.*);
tmpStr = "database=([^;]*);";
Match TitleMatch = Regex.Match(strTmp, tmpStr ,RegexOptions.IgnoreCase | RegexOptions.Multiline );

//如下例子作语法参考用获取size的值,实际应用可能不会如此复杂
strTmp = "><font color='red' size=6>WebForm3</font><" ;
tmpStr = @"<(\w+\s+\w+[=]+[']+\w+[']+\s+[size=]+\d)>";
Match TitleMatch = Regex.Match(strTmp ,tmpStr , RegexOptions.IgnoreCase | RegexOptions.Multiline );

//取出匹配项的值
string tmpStrTitle = TitleMatch.Groups[1].Value;
//替换掉HTML页中所有HTML标记
Label1.Text=Regex.Replace(Label1.Text.Trim(),"<.+?>","")+"*********"+TitleMatch.Groups[1].Value;

//判断匹配正则表达式是否成功
if(Regex.Match(tmpStr,"<.+?>").Success)
//=====================End1========================

//=====================Begin2========================
string webDocContent="<a href=http://www.xxx.xxx/college/pages/default.htm target=_blank>师资队伍</A>";
//解释下面正则表达式:[\s]表示匹配空格字符,"+" 表示连接
string strPattern=@"a[\s]+href=(?<Link>[^\s>]+)[^>]*>(?<Text>[^<]*)</a>";
//获取链接显示的文字
MatchCollection Matches=Regex.Matches(webDocContent,strPattern,RegexOptions.IgnoreCase|RegexOptions.Compiled);
foreach(Match NextMatch in Matches)
//=====================End2========================

//=====================Begin3========================
string strPageContent = string.Empty;
StreamReader srPage = new StreamReader(@"e:\save.txt",System.Text.Encoding.GetEncoding("gb2312"));
strPageContent = srPage.ReadToEnd();
srPage.Close();
//(\\s)*表示0或多个空格符、回车符等,*表示比配0或多个。(.*?)表示除回车符外的所有信息
MatchCollection TitleMatchs = Regex.Matches(strPageContent, "<td width=\"85%\" class=\"common_text\">((\\s)*(.*?)(\\s)*(.*?)(\\s)*(.*?)(\\s)*(.*?)(\\s)*)</td>", RegexOptions.IgnoreCase | RegexOptions.Multiline );
int tmpNum = 0;
//循环正则表达式所获取的,满足表达式的内容集合
foreach(Match NextMatch in TitleMatchs)
//=====================End3========================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: