正则替换

xiaowen_ly 2011-10-26 04:15:04
一个html页面里面有这样一些链接:
<a href="/login.aspx">xx</a>
<a href="/login.htm">xx</a>
<a href="/ceo/mag.aspx?id=nn">xx</a>
<a href='/login.aspx'>xx</a>
<a href="/mag.aspx">xx</a>等等
现在需要把这个页面中.aspx页面类型的链接前面加上/test,即<a href="/mag.aspx">xx</a>变成<a href="/test/mag.aspx">xx</a>,但是login页面不加,也就是说<a href="/login.aspx">xx</a> 和<a href='/login.aspx'>xx</a>不加,除了.aspx页面以外的类型也不加,比如htm、图片等都不加.

假设页面的源码存储在string htmlrig变量中,怎么写正则最后得到替换好的页面源码?
...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2011-10-27
  • 打赏
  • 举报
回复
一次性把规则写清楚啊。。。




void Main()
{
string html=@"<a href=""/login.aspx"">xx</a>
<a href=""/login.htm"">xx</a>
<a href=""/ceo/mag.aspx?id=nn"">xx</a>
<a href='/login.aspx'>xx</a>
<a href=""/mag.aspx"">xx</a>
<a href=""index.aspx"">xx</a>
<a href=""/register.aspx"">xx</a>";
html=Regex.Replace(html,@"(?i)(<a href=(['""\s]?))([^'""]+(?<!login|register)\.aspx[^'""\s]*)\2",m=>{
return m.Groups[3].Value.StartsWith("/")?m.Groups[1].Value+"/test"+m.Groups[3].Value+m.Groups[2].Value
:m.Groups[1].Value+"/test/"+m.Groups[3].Value+m.Groups[2].Value;
});
Console.WriteLine(html);
/*
<a href="/login.aspx">xx</a>
<a href="/login.htm">xx</a>
<a href="/test/ceo/mag.aspx?id=nn">xx</a>
<a href='/login.aspx'>xx</a>
<a href="/test/mag.aspx">xx</a>
<a href="/test/index.aspx">xx</a>
<a href="/register.aspx">xx</a>
*/
}
xiaowen_ly 2011-10-27
  • 打赏
  • 举报
回复
如果还有<a href="index.aspx">xx</a>也要变为<a href="/test/index.aspx">xx</a>,还有<a href="/register.aspx">xx</a>不变,注册页面和login页面一样不变呢?谢谢
xiaowen_ly 2011-10-27
  • 打赏
  • 举报
回复
新需求。。。多谢了
q107770540 2011-10-26
  • 打赏
  • 举报
回复

void Main()
{
string html=@"<a href=""/login.aspx"">xx</a>
<a href=""/login.htm"">xx</a>
<a href=""/ceo/mag.aspx?id=nn"">xx</a>
<a href='/login.aspx'>xx</a>
<a href=""/mag.aspx"">xx</a>";
html=Regex.Replace(html,@"(?i)(<a href=(['""\s]?))([^'""]+(?<!login)\.aspx[^'""\s]*)\2","$1/test$3$2");
Console.WriteLine(html);
/*
<a href="/login.aspx">xx</a>
<a href="/login.htm">xx</a>
<a href="/test/ceo/mag.aspx?id=nn">xx</a>
<a href='/login.aspx'>xx</a>
<a href="/test/mag.aspx">xx</a>
*/
}

q107770540 2011-10-26
  • 打赏
  • 举报
回复

void Main()
{
string html=@"<a href=""/login.aspx"">xx</a>
<a href=""/login.htm"">xx</a>
<a href=""/ceo/mag.aspx?id=nn"">xx</a>
<a href='/login.aspx'>xx</a>
<a href=""/mag.aspx"">xx</a>";
html=Regex.Replace(html,@"[^'""]+(?<!login)\.aspx","/test$0");
Console.WriteLine(html);
/*
<a href="/login.aspx">xx</a>
<a href="/login.htm">xx</a>
<a href="/test/ceo/mag.aspx?id=nn">xx</a>
<a href='/login.aspx'>xx</a>
<a href="/test/mag.aspx">xx</a>
*/
}

62,074

社区成员

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

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

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

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