原先我的思路是根据我输入的标题,找到链接地址,但是现在我想改一下,能不能利用我输入的不完整的标题,同样找到我的链接地址,例如:
这是我的html<a href="/article/2010/1202/article_21642.html" title="四大食用油巨头被约谈:两节不得涨价"  target="_blank">四大食用油巨头被约谈:两节不得涨价</a>
原先输入:四大食用油巨头被约谈:两节不得涨价,就可以得到/article/2010/1202/article_21642.html,现在我想只输入四大食用油巨头,也同样可以得到/article/2010/1202/article_21642.html这个,请问这个要怎么实现啊,

解决方案 »

  1.   

    兄弟,这样做不行吧,如果同名文件出现他总会找最后一个匹配的那个你这个是新闻类的,在数据库的新闻表里应该都有新闻标题与他对应生成的URL
    他们是一一以应的啊~!以上为建议~!
      

  2.   

    不知道你原来怎么写的正则,提供个思路
    匹配下面href="中的值
    <a href="/article/2010/1202/article_21642.html" title="四大食用油巨头被约谈:两节不得涨价" target="_blank">四大食用油巨头被约谈:两节不得涨价</a>
    正则:
    (?is)(?<=<a[^>]*href=")[^>"]*(?="[^>]*title="四大食用油巨头被约谈:两节不得涨价[^>"]*)
    这部分可以作为变量进行传值
    当匹配
    <a href="/article/2010/1202/article_21642.html" title="白菜" target="_blank">四大食用油巨头被约谈:两节不得涨价</a>
    正则:
    (?is)(?<=<a[^>]*href=")[^>"]*(?="[^>]*title="白菜[^>"]*)
    就可以了
      

  3.   


    void Main()
    {
    string html=@"<a href=""/article/2010/1202/article_21642.html"" title=""四大食用油巨头被约谈:两节不得涨价"" target=""_blank"">四大食用油巨头被约谈:两节不得涨价</a>"; Match m =Regex.Match(html,@"(?i)<a\shref=""(?<href>.*?)""\stitle=""四大食用油巨头.*"".*?>.*?</a>");
    if(m.Success)
    {
      Console.WriteLine(m.Groups["href"].Value);  
      //     /article/2010/1202/article_21642.html
    }
    }
      

  4.   

    string result = Regex.Match(yourHtml,@"(?<=<a[^>]+?href=(['""]?))[^'""\s]+(?=\1[^>]*>((?!</a).)*?四大食用油巨头.*?</a>)").Value;需要的时候替换文本即可。
      

  5.   

            /// <summary>
            /// 查询相应标题,返回Url地址。。
            /// </summary>
            /// <param name="htmlSource">网页源代码。。</param>
            /// <param name="keyword">单个关键词。。</param>
            /// <returns>查询结果,如果没有匹配项则数组长度为0。。</returns>
            static public string[] GetUrlString(string htmlSource, string keyword)
            {
                string pattern = string.Format("(?<=<a\\s+href=\")[^\"]+(?=\"[^>]*>[^<]*(?:{0})+[^<]*</a>)", keyword);
                MatchCollection ms = Regex.Matches(htmlSource, pattern, RegexOptions.IgnoreCase);
                string[] urlString = new string[ms.Count];
                for (int i = 0; i < ms.Count; i++)
                {
                    urlString[i] = ms[i].Value;
                }
                return urlString;
            }
      

  6.   

    我把4L的改成这样为什么就不行了。
    string title = @"(?<=<a[^>]+?href=(['""]?))[^'""\s]+(?=\1[^>]*>((?!</a).)*?" + '"' + TextBox2 .Text + '"' + @".*?</a>)";
     m = Regex.Match(s, title);
                if (m.Success)
                {
                    string  c = m.m.Value;            
    }
    c取得总是空值,我就把它分开写的啊
      

  7.   

    public static void Test()
    {
        string html = @"<a href=""/article/2010/1202/article_21642.html"" title=""四大食用油巨头被约谈:两节不得涨价"" target=""_blank"">四大食用油巨头被约谈:两节不得涨价</a>";
        Regex reg = GetRegexLikeText("食用油巨头");
        Console.WriteLine(reg.IsMatch(html));
    }public static Regex GetRegexLikeText(string keyword)
    {
        return new Regex(@"(?<=<a[^>]+?href=(['""]?))[^'""\s]+(?=\1[^>]*>((?!</a).)*?" + Regex.Escape(keyword) + @".*?</a>)");
    }
    写成方法了。你传递参数时候用你的textbox1.text即可。
      

  8.   

    http://download.csdn.net/source/2844387
      

  9.   

    regex.match改为
    Matches返回的就是一个集合了。你foreach这个集合即可。