zoukankan      html  css  js  c++  java
  • 正则表达式提取网址、标题、图片等一例(.Net Asp Javascript/Js)的实现

    在一些抓取、过滤等情况下, 正则表达式 regular expression 的优势是很明显的。
    例如,有如下的字符串:
    复制代码 代码如下:

    <li><a href="http://www.abcxyz.com/something/article/143.htm" title="FCKEditor高亮代码插件测试"><span class="article-date">[09/11]</span>FCKEditor高亮代码插件测试</a>& lt;/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& gt;</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& gt;</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>& lt;/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>
  • 相关阅读:
    LINQ/EF/Lambda 比较字符串日期时间大小
    WinForm RDLC SubReport Step by step
    centos7安装7-zip
    centos修改命令提示符颜色
    更换官方zabbix.repo为阿里云镜像
    利用shell脚本清理nginx日志
    docker
    centos 建立静态 IP 与 IP 地址丢失的解决办法
    构建lnmp高可用架构
    keepalived高可用
  • 原文地址:https://www.cnblogs.com/top5/p/1601992.html
Copyright © 2011-2022 走看看