用各种语言实现的提取内容中的网址,标题,图片等功能代码,对于大家掌握正则的共用性有很大的帮助。
在一些抓取、过滤等情况下, 正则表达式 regular expression 的优势是很明显的。 
例如,有如下的字符串: 
复制代码 代码如下:
<li><a href="https://www.abcxyz.com/something/article/143.htm" title="FCKEditor高亮代码插件测试"><span>[09/11]</span>FCKEditor高亮代码插件测试</a></li> 
现在,需要提取 href 后面的网址,[]内的日期,和 链接的文字。
下面给出C#, ASP 和 Javascript 的实现方式
C#的实现
复制代码 代码如下:
string strHTML = "<li><a \"href=https://www.abcxyz.com/something/article/143.htm\" title=\"FCKEditor高亮代码插件测试\"><span class=\"article-date\">[09/11]</span>FCKEditor高亮代码插件测试</a></li>"; 
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 = "<li><a href=""https://localhost/Z-Blog18/article/143.htm"" title=""FCKEditor高亮代码插件测试""><spanarticle-date"">[09/11]</span>FCKEditor高亮代码插件测试</a></li>" 
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("<br>") 
Response.Write("日期:") 
Response.Write(objMatches(0).SubMatches(1)) 
Response.Write("<br>") 
Response.Write("标题:") 
Response.Write(objMatches(0).SubMatches(2)) 
End If 
%> 
Javascript的实现
复制代码 代码如下:
<script type="text/javascript"> 
var str = '<li><a href="https://localhost/Z-Blog18/article/143.htm" title="FCKEditor高亮代码插件测试"><span>[09/11]</span>FCKEditor高亮代码插件测试</a></li>'; 
var pattern = /http:\/\/([^\s]+)".+?span.+?\[(.+?)\].+?>(.+?)</gi; 
var mts = pattern.exec(str); 
if (mts != null) 
{ 
alert(mts[1]); 
alert(mts[2]); 
alert(mts[3]); 
alert(mts[4]); 
} 
</script>
您可能感兴趣的文章:
