关于正则匹配的一个问题 谢谢

chenwei175528 2010-01-14 05:48:49
匹配字符串中所有的链接,但是链接不包括字符串aaa
我写的是<a.*?href=\"(.*?)(?:(?!aaa)[^.])+\".*?>(.*?)</a>
会有一个问题
<a id='11' href=\"aaa.html\">aa</a>,0099,<a id='11' href=\".bbb.com\">ba</a>
像这样的一个字符串 会被正则当做一个链接来处理
这个该怎么解决? 谢谢
...全文
154 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_风中雪狼 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lcl_data 的回复:]
以前一直(?:(?! </?a\b).)*)理解不了,我写了便签贴我桌上,看的多了终于明白了。。
[/Quote]
是什么意思啊
十八道胡同 2010-01-16
  • 打赏
  • 举报
回复
以前一直(?:(?!</?a\b).)*)理解不了,我写了便签贴我桌上,看的多了终于明白了。。
-过客- 2010-01-16
  • 打赏
  • 举报
回复
就是去掉所有链接,包含aaa的除外,直接说需求就是了,何必绕那么多弯

string test = "<a id='11' href=\"aaa.html\">aa </a>,0099, <a id='11' href=\".bbb.com\">ba </a> ";
Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?:(?!aaa)[^'""\s>])+\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
string result = reg.Replace(test, "${text}");
richTextBox2.Text = result;
ygsj123 2010-01-16
  • 打赏
  • 举报
回复
路过
-过客- 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chenwei175528 的回复:]
up 我想把链接 包括 <a>标签也匹配出来
就是取出这个 <a id='11' href=\".bbb.com\">ba </a>
[/Quote]

这个,就一定要把代码全写出来吗?

richTextBox2.Text += m.Value + "\n";
Mr-Jee 2010-01-15
  • 打赏
  • 举报
回复
别用贪婪匹配就OK了
luyejishu 2010-01-15
  • 打赏
  • 举报
回复
正则表达式有个模糊匹配的功能
chenwei175528 2010-01-15
  • 打赏
  • 举报
回复
up 我想把链接 包括<a>标签也匹配出来
就是取出这个<a id='11' href=\".bbb.com\">ba </a>
kofkyo 2010-01-15
  • 打赏
  • 举报
回复
路过
諾临風 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cj205 的回复:]
别用贪婪匹配就OK了
[/Quote]
为什么?????效率很低吗??????
Pro_ah 2010-01-15
  • 打赏
  • 举报
回复
路过
sdnjwang 2010-01-15
  • 打赏
  • 举报
回复
guoke
十八道胡同 2010-01-15
  • 打赏
  • 举报
回复

如果是要把m.Value) 用m.Groups["text"].Value替换
就是是把<>里面的东西全部去掉?
Replace(@"<[^>]*>","")
十八道胡同 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chenwei175528 的回复:]

我其实是想做替换,就是想把筛选出来的东西(m.Value) 用m.Groups["text"].Value替换
[/Quote]
要替换什么内容,替换成什么内容。
何必绕弯弯。。
chenwei175528 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lxcnn 的回复:]
引用 4 楼 chenwei175528 的回复:
up 我想把链接 包括 <a>标签也匹配出来
就是取出这个 <a id='11' href=\".bbb.com\">ba </a>


这个,就一定要把代码全写出来吗?

C# coderichTextBox2.Text+= m.Value+"\n";
[/Quote]

我其实是想做替换,就是想把筛选出来的东西(m.Value) 用m.Groups["text"].Value替换

再帮忙下 谢谢
vip__888 2010-01-14
  • 打赏
  • 举报
回复
过客过出 寸草不生
csdn_风中雪狼 2010-01-14
  • 打赏
  • 举报
回复
支持过客
-过客- 2010-01-14
  • 打赏
  • 举报
回复
try...

Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>(?:(?!aaa)[^'""\s>])+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");MatchCollection mc = reg.Matches(yourStr);foreach (Match m in mc)
{
richTextBox2.Text += m.Groups["url"].Value + "\n";
richTextBox2.Text += m.Groups["text"].Value + "\n";
}

62,254

社区成员

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

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

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

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