在一些抓取、过滤等情况下, 正则表达式 regular expression 的优势是很明显的。
例如,有如下的字符串:
http://www.abcxyz.com/something/article/143.htm" title="FCKEditor高亮代码插件测试">[09/11]FCKEditor高亮代码插件测试
在,需要提取 href 后面的网址,[]内的日期,和 链接的文字。
下面给出C#, ASP 和 javascript 的实现方式
C#的实现
string strHTML = "
[09/11]FCKEditor高亮代码插件测试";
string pattern = "http://([^\\s]+)\".+?span.+?\\[(.+?)\\].+?>(.+?)<";
Regex reg = new Regex( pattern, RegexOptions.IgnoreCase );
MatchCollection mc = reg.Matches( strHTML );
if (mc.Count > 0)
{
foreach (Match m in mc)
{
Console.WriteLine( m.Groups[1].Value );
Console.WriteLine( m.Groups[2].Value );
Console.WriteLine( m.Groups[3].Value );
}
}
ASP的实现
<%
Dim str, reg, objMatches
str = "
http://localhost/Z-Blog18/article/143.htm"" title=""FCKEditor高亮代码插件测试"">[09/11]FCKEditor高亮代码插件测试"
Set reg = new RegExp
reg.IgnoreCase = True
reg.Global = True
reg.Pattern = "http://([^\s]+)"".+?span.+?\[(.+?)\].+?>(.+?)<"
Set objMatches = reg.Execute(str)
If objMatches.Count > 0 Then
Response.Write("网址:")
Response.Write(objMatches(0).SubMatches(0))
Response.Write("
")
Response.Write("日期:")
Response.Write(objMatches(0).SubMatches(1))
Response.Write("
")
Response.Write("标题:")
Response.Write(objMatches(0).SubMatches(2))
End If
%>
javascript的实现
本文作者:佚名 来源:http://www.zu14.cn/2008/11/05/net_mail/
CIO之家 www.ciozj.com 微信公众号:imciow