请教正则表达式多行定义问题

sendling 2009-04-08 05:12:31
原html代码如下
<div class="name">
<div>接送线</div>
<a href="/city-type-lines/62.html">更多</a>
写了正则定义
<div class="name">
<div>(?<title>.+)</div>
<a href="(?<url>.+)">更多</a>
在Regex Tester测试通过,但是正则3行不能同时在一行显示,CS定义


Regex aa = new Regex(@"^<div class=\"name\"><div>(?<title>.+)</div><a href="(?<url>.+)">更多</a>$", RegexOptions.Multiline);
MatchCollection matchs = aa.Matches(sHtml);

这里name 好像不能加""双引号,谁知道这种多行如何处理或者我的正则有没有写错,后台如何定义好
...全文
333 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
snritxihc 2009-06-04
  • 打赏
  • 举报
回复
<div\s*class="name"([\s\S]+?)\s*</a>
sendling 2009-04-09
  • 打赏
  • 举报
回复
太感谢2位帮忙解决
sprc_lcl 2009-04-09
  • 打赏
  • 举报
回复
把开始的^和最后的$去掉
keystudio 2009-04-09
  • 打赏
  • 举报
回复

@"<div\s*class=""name"">\s*<div>(?<title>[^<>]+)</div>\s*<a\s*href=""?(?<url>[^""\s]+)""?>更多\s*</a>"

/*<div class="name">
<div>高峰大站车</div>
<a href="/city-type-lines/59.html">更多</a>
<div class="name">
<div>高峰线路</div>
<a href="/city-type-lines/60.html">更多</a>
<div class="name">
<div>假日线</div>
<a href="/city-type-lines/61.html">更多</a>
<div class="name">
<div>接送线</div>
<a href="/city-type-lines/62.html">更多</a>
<div class="name">
<div>快速公交系列</div>
<a href="/city-type-lines/63.html">更多</a>
<div class="name">
<div>快速选择</div>
<a href="/city-type-lines/64.html">更多</a>
<div class="name">
<div>旅游线</div>
<a href="/city-type-lines/65.html">更多</a>
<div class="name">
<div>市区线路</div>
<a href="/city-type-lines/66.html">更多</a>
<div class="name">
<div>小区巴士</div>
<a href="/city-type-lines/67.html">更多</a>
<div class="name">
<div>学校线</div>
<a href="/city-type-lines/68.html">更多</a>
<div class="name">
<div>夜间线路</div>
<a href="/city-type-lines/69.html">更多</a>
<div class="name">
<div>准快速公交线路</div>
<a href="/city-type-lines/70.html">更多</a>
*/
//12个匹配结果
sendling 2009-04-08
  • 打赏
  • 举报
回复
我把要调试的页面代码贴上来,希望大家帮我顶顶,顶者有分,主要想能解决这个问题,再此感谢大家,分不够的话我再加

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;

namespace web
{
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//需要结果

// 列出这样的 <div>高峰大站车</div><a href="/city-type-lines/59.html">更多</a>

string htmlcode = GetHTML("http://www.8684.com/?city=hangzhou", "utf-8");
// Regex aa = new Regex(@"^<div\s*class=""name"">\s*<div>(?<title>[^<>]+)</div>\s*<a\s*href=""?(?<url>[^""\s]+)""?>更多\s*</a>\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase);
Regex aa = new Regex(@"^<div class=""name""><div>(?<title>.+)</div><a href=""(?<url>.+)"">更多</a>$",RegexOptions.Multiline | RegexOptions.IgnoreCase);
MatchCollection marlist = aa.Matches(htmlcode);
Response.Write(marlist.Count);
//(@"^<div class=\"name\"><div>(?<title>.+)</div><a href="(?<url>.+)">更多</a>$",
}
}
/// <summary>
/// 获取网页源代码
/// </summary>
/// <param name="url">URL路径</param>
/// <param name="encoding">编码方式</param>
/// <returns></returns>
public string GetHTML(string url, string encoding)
{
WebClient web = new WebClient();
byte[] buffer = web.DownloadData(url);
return Encoding.GetEncoding(encoding).GetString(buffer);
}

}
}

sendling 2009-04-08
  • 打赏
  • 举报
回复
先谢谢sprc_lcl ,keystudio 2位回答,这样虽然没有出错,好像不能出来结果出来
keystudio 2009-04-08
  • 打赏
  • 举报
回复

//少个" - -!
@"^<div\s*class=""name"">\s*<div>(?<title>[^<>]+)</div>\s*<a\s*href=""?(?<url>[^""\s]+)""?>更多\s*</a>\s*$"
keystudio 2009-04-08
  • 打赏
  • 举报
回复

//1加了@之后转义"要用""
//2匹配多行不是把正则写成多行而是让正则匹配多行- -!
//3匹配空格要用\s
//4贪婪匹配慎重 .+像这种很容易造成匹配结果不准确
@"^<div\s*class=""name"">\s*<div>(?<title>[^<>]+)</div>\s*<a\s*href=""?(?<url>[^"\s]+)""?>更多\s*</a>\s*$"
sprc_lcl 2009-04-08
  • 打赏
  • 举报
回复

改为@"^<div class=""name"">\s*<div>(?<title>.+)</div>\s*<a href="(?<url>.+)">更多</a>$"试试
或者
string pstr = @"<div class=""name"">
<div>(?<title>.+) </div>
<a href="(?<url>.+)">更多 </a>";
sprc_lcl 2009-04-08
  • 打赏
  • 举报
回复
string str=@"..""..";//一个引号改为两个引号,用@就表示一个引号不要加\

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧