原先我的思路是根据我输入的标题,找到链接地址,但是现在我想改一下,能不能利用我输入的不完整的标题,同样找到我的链接地址,例如:
这是我的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这个,请问这个要怎么实现啊,
这是我的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这个,请问这个要怎么实现啊,
解决方案 »
- 如何实现SQL两个表之间的数据同步
- 在C#中怎么实现搜索提示用户输入日期以浏览所有那天的约会
- C#textbox问题求解啊~(如何让一个textbox里面的内容进到另一个里面)
- 请问高手一个表达式的问题!
- 求用C#写一个在框架另个窗口中打开网页的语句,谢谢!
- 毕业,便宜卖自己
- zedgraph关于多线条X轴的问题
- windows.form.DataGrid控件如何获取选中的多行的索引?
- 微软大哥们救救我好吗?快来不及了,今天就要交工阿。可怎么办啊。
- 我在网上找到了一个《c#完全手册》,PDF格式的,谁要请举手啦!@
- SQL数据库事务批量添加中禁止重复值的问题
- System.xml是功能很全的xml解释工具吗,还是一个功能偏简单的?
他们是一一以应的啊~!以上为建议~!
匹配下面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="白菜[^>"]*)
就可以了
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
}
}
/// 查询相应标题,返回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;
}
string title = @"(?<=<a[^>]+?href=(['""]?))[^'""\s]+(?=\1[^>]*>((?!</a).)*?" + '"' + TextBox2 .Text + '"' + @".*?</a>)";
m = Regex.Match(s, title);
if (m.Success)
{
string c = m.m.Value;
}
c取得总是空值,我就把它分开写的啊
{
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即可。
Matches返回的就是一个集合了。你foreach这个集合即可。