【问个正则问题】

tiandiyuzhou1 2010-10-05 10:35:30
想要过滤a标签只取它的内容
自己写了个
string input="<a href="http://www.baidu.com">百度</a>";
Regex.Replace(input,@"<a[^>]*href=\s*[^>]*?\s*[^>]*>|</a>");
这样是会成功
可是遇到
string input="<a href=<a href="http://www.baidu.com">百度</a>>百度</a>"
会剩下百度>百度
该怎么写呢?
还有个问题是
Regex.Replace(input,@"<a[^>]*href=\s*[^>]*?\s*[^>]*>|</a>");
这里的[^>]想用[^"]双引号可是会抱错
改成[^""]这样也不行
该怎么解吸双引号呢?
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-10-06
  • 打赏
  • 举报
回复
Match m = Regex.Match(@"<a href=<a href=""http://www.baidu.com"">百度</a>>百度</a>“,@"(?is)<a[^<>]*?href=""(?<url>[^""]+)""[^>]*>(?<text>.*?)</a>");
m.Groups["url"].Value;//就是网址
m.Groups["text"].Value;//就是显示的文本
q107770540 2010-10-06
  • 打赏
  • 举报
回复
这里的[^>]想用[^"]双引号可是会抱错

====
try:

[^\"]
huangwenquan123 2010-10-05
  • 打赏
  • 举报
回复
在字符串中双引号可以用\来解析
例如string input = "<a href=\"http://www.baidu.com\">"
但是你在前面加了@这样\会代表它本身
可以用“”
string input = @"< href=""http://www.baidu.com"">"
tiandiyuzhou1 2010-10-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
Regex reg = new Regex(@"(?i)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>");
MatchCollection mc = reg.Matches(str);
foreach (Match m in mc)
{
Response.Write(m.Groups["url"].Value);
}
[/Quote]
由于是直接把<a>标签替换为空的,只留内容,就不用捕获组了

Regex.Replace(input,@"<a[^>]*?href=(['""]?)([^'""\s>]+)\1[^>]*>","",Regex.Isnore);
写成这样可以吗?
//还有双引号怎么匹配呢?
wuyq11 2010-10-05
  • 打赏
  • 举报
回复
Regex reg = new Regex(@"(?i)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>");
MatchCollection mc = reg.Matches(str);
foreach (Match m in mc)
{
Response.Write(m.Groups["url"].Value);
}

62,271

社区成员

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

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

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

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