求一个简单的正则表达式

topso 2010-02-21 11:59:21
<div><a href="index.html">index</a> > <a href="f-4.html">栏目一</a> > <a href="f-11.html">栏目二</a> > <a href="f-95.html">栏目三</a> > 文章标题</div>

我想匹配以上字符串“文章标题”前面第一个栏目的id号,应该怎么写?
本例需要匹配的id是95,我写的正则是:
Match t = Regex.Match(s, " > <a href=\"f-(\\d+).html\">(.*?)</a> > (.*?)</div>");
id = t.Groups[1].Value;
但总是匹配到的id是4,貌似搞的是贪婪匹配了,不知道怎么匹配到95呢?
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2010-02-22
  • 打赏
  • 举报
回复
引用 2 楼 vip__888 的回复:
过客闻着标题就过来了


我只是奇怪小虎为什么没来,也不让我有个尾随的
vip__888 2010-02-22
  • 打赏
  • 举报
回复
过客闻着标题就过来了
-过客- 2010-02-22
  • 打赏
  • 举报
回复
即然是根据“文章标题”和“栏目”取,正则中为什么没有出现?

string test = "<div> <a href=\"index.html\">index </a> > <a href=\"f-4.html\">栏目一 </a> > <a href=\"f-11.html\">栏目二 </a> > <a href=\"f-95.html\">栏目三 </a> > 文章标题 </div> ";
Regex reg = new Regex(@"(?i)<a href=""f-(\d+)\.html"">栏目[^<>]*</a>[^<>]*文章标题");
Match m = reg.Match(test);
if (m.Success)
{
richTextBox2.Text = m.Groups[1].Value;
}
-过客- 2010-02-22
  • 打赏
  • 举报
回复
try...

            string test = "<div> <a href=\"index.html\">index </a> > <a href=\"f-4.html\">栏目一 </a> > <a href=\"f-11.html\">栏目二 </a> > <a href=\"f-95.html\">栏目三 </a> > 文章标题 </div> ";
Regex reg = new Regex(@"(?isn)<a href=""f-(?<id>\d+)\.html"">((?!</?a>).)*</a>((?!</?(div|a)>).)*</div>");
Match m = reg.Match(test);
if (m.Success)
{
richTextBox2.Text = m.Groups["id"].Value;
}
-过客- 2010-02-22
  • 打赏
  • 举报
回复
(?i) 忽略大小写
(?s) 单行模式,改变小数点的匹配行为,使它能够匹配任意字符
(?n) 使普通捕获组解释为非捕获组

参考
.NET正则基础之——.NET正则匹配模式
topso 2010-02-22
  • 打赏
  • 举报
回复
哦,多谢lxcnn,另外你给的正则中的(?isn) 是什么意思?网上没查到用法。
topso 2010-02-22
  • 打赏
  • 举报
回复
“文章标题”和“栏目”里面的字是会变化的,所以没写进去。
-过客- 2010-02-22
  • 打赏
  • 举报
回复
[] 字符组,匹配所包含的一系列字符中的任意一个。需要注意的是,[]虽然能匹配其中的任意一个字符,但匹配的结果只能是一个字符,不是多个。

([10|90|95|100])
//改为
(10|90|95|100)
topso 2010-02-22
  • 打赏
  • 举报
回复
恩,谢谢,另外再问个:我想取的栏目id,其实只有几种变化,比如:10,90,95,100
<div> <a href="index.html">index </a> > <a href="f-4.html">栏目一 </a> > <a href="f-11.html">栏目二 </a> > <a href="f-95.html">栏目三 </a> > 文章标题 </div>

我的正则写成下面的为什么不行?
Match t = Regex.Match(s, " > <a href=\"f-([10|90|95|100]).html\">(.*?) </a> > (.*?) </div>");

62,047

社区成员

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

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

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

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