|
用各种语言实现的提取内容中的网址,标题,图片等功能代码,对于大家掌握正则的共用性有很大的帮助。
在一些抓取、过滤等情况下, 正则表达式 regular expression 的优势是很明显的。 例如,有如下的字符串: 复制代码 代码如下: <li><a href="http://www.abcxyz.com/something/article/143.htm" title="FCKEditor高亮代码插件测试"><span class="article-date">[09/11]</span>FCKEditor高亮代码插件测试</a></li>
现在,需要提取 href 后面的网址,[]内的日期,和 链接的文字。 下面给出C#, ASP 和 Javascript 的实现方式 C#的实现 复制代码 代码如下: string strHTML = "<li><a \"href=http://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=""http://localhost/Z-Blog18/article/143.htm"" title=""FCKEditor高亮代码插件测试""><span class=""article-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="http://localhost/Z-Blog18/article/143.htm" title="FCKEditor高亮代码插件测试"><span class="article-date">[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>
|
|