<<<<<<<<< 正则表达式的问题,请赐教 >>>>>>>>>>>>

愚者只看星不看答案 2009-04-28 04:25:37
我想使用Regex.Replace静态方法,替换掉

任何html中包含规则匹配 属性为target,后跟""或后跟'',或没有单引号和双引号并且属性值为任意字符串的情况,替换为空字符串。
例:

<a href="" target="_blank">test</a>
<a href="" target='new'>test</a>
<a href="" target=parent>test</a>

最终所有的结果都是
<a href="" >test</a>,请问这个正则怎么写。非常感谢。
...全文
88 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wackyboy 2009-04-29
  • 打赏
  • 举报
回复


htmlSource = Regex.Replace(htmlSource, @"(?is)(?<=<\w+.*?)alt=['""]?[^'"">\s]*['""]?", "");
/*应对alt="" 的情况
但是当style="border:1px solid #ccc" 中含有空格的时候 和这种情况
<a target=parent href="">test </a> 会出现问题*/

//因为style这种里面可能出现空格的 其前后必定会出现单双引号 所以可以这样
htmlSource = Regex.Replace(htmlSource, @"(?is)(?<=<\w+.*?)style=(['""])[^'"">]*\1", "");


或者将标签的熟悉性都加上单引号或者双引号在处理就可以了
阳光游子 2009-04-29
  • 打赏
  • 举报
回复
学习~!
plglenn 2009-04-29
  • 打赏
  • 举报
回复
htmlSource = Regex.Replace(htmlSource, @"(?is)(?<=<\w+.*?)alt=['""]?[^'"">\s]+['""]?", "", RegexOptions.IgnoreCase);
正解
  • 打赏
  • 举报
回复
上面的c#写错了,应该是


htmlSource = Regex.Replace(htmlSource, @"(?is)(?<=<\w+.*?)alt=['""]?[^'"">\s]+['""]?", "", RegexOptions.IgnoreCase);
  • 打赏
  • 举报
回复
wackyboy ^_^
感谢回复。非常感谢。

据我测试,发现
<div style="border:1px solid #ccc">content</div> 我想去掉style整个属性和值
以及
<img src="" alt="" />我想去掉alt这个属性和值

我使用您提供的方法,写了以下代码


// 删除rel
htmlSource = Regex.Replace(htmlSource, @"(?is)(?<=<\w+.*?)rel=['""]?[^'"">\s]+['""]?", "", RegexOptions.IgnoreCase);


结果发现alt=""和style="border:1px solid #ccc"依然保存在html中,请赐教。
中年秃头大叔 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wackyboy 的回复:]
C# code
Regex.Replace(input,@"(?is)(?<=<\w+.*?)target=['""]?[^'"">\s]+['""]?","");
[/Quote]
mark
wackyboy 2009-04-29
  • 打赏
  • 举报
回复

htmlSource = Regex.Replace(htmlSource, @"(?is)(?<=<\w+.*?)style=.*?(?=\s\b\w+=|/?>)","");
//这样吧 你可以试一下以前的可不可以!!
  • 打赏
  • 举报
回复
wackyboy ,非常非常感谢。
能不能考虑一下style的值没有单引号或双引号的情况?
如:
<span style=border:1px solid #ccc>test</span>
希望这样也可以去掉style属性和值。产生这样的html
<span>test</span>

谢谢。。

wackyboy 2009-04-28
  • 打赏
  • 举报
回复

Regex.Replace(input,@"(?is)(?<=<\w+.*?)target=['""]?[^'"">\s]+['""]?","");
HDNGO 2009-04-28
  • 打赏
  • 举报
回复
string str = "<a href=\"\" target=\"_blank\">test</a>";
string result = Regex.Replace(str, @"<a.+href=""[^""]*([^>]*)>(.+)</a>", "<a href=\"\">$2</a>");
Console.WriteLine(result);
kenesyu 2009-04-28
  • 打赏
  • 举报
回复
正规不是很熟悉
不过我到有一个笨的方法
就是<a href="" target=parent>test </a>截取到<a href="" target=parent>应该不难indexof('>')就可以
然后在把这个值Split(' ')应该就能得到字符target=parent>然后在把"target=parent>"替换成">"
对不起啊我的方法笨了点
星星不要见怪

62,025

社区成员

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

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

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

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