高分求解正则表达式

masterlijianfei 2013-08-02 09:40:29
有一个html文件,里面包含大量伪静态.shtml的超链接,需要把这些超链接扩展名(.shtml)替换为.html的扩展名纯静态格式,但是某些特征的伪静态超链接不需要被替换,如具有以下特征的伪静态超链接都不能被替换:
/Search/Product-abcdsjsjsj.shtml 里面包含特征字符Product-
/Search/News-abcdsjsjsj.shtml 里面包含特征字符News-
/Search/Help-abcdsjsjsj.shtml 里面包含特征字符Help-
/News/Rss-abcsekdjdkuuss.shtml 里面包含特征字符Rss-
/Help/abcsekdjdkuuss-m-1.shtml
/News/abcsekdjdkuuss-m-2.shtml 里面包含特征字符-m-2
/Product/abcsekdjdkuuss-m-1.shtml 里面包含特征字符-m-1

html文件里面其他所有超链接如/Product/ahsjcnsadsjadkjsa.shtml,/News/dhsoafidsfdjs.shtml都要替换为/Product/ahsjcnsadsjadkjsa.html,/News/dhsoafidsfdjs.html

请问正则表达式怎么书写,需要各位大侠的帮忙
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterlijianfei 2013-08-02
  • 打赏
  • 举报
回复
正!已解决!
q107770540 2013-08-02
  • 打赏
  • 举报
回复
update:

//这样写法应该会更高效一些~
Regex reg=new Regex(@"(?i)(/((?!(?:Product|News|Help|Rss)-).)+(?<!-m-\d)\.)s(html)");
	list.ForEach(l=>Console.WriteLine("{0}      {1}",l,reg.Replace(l,"$1$3")));
q107770540 2013-08-02
  • 打赏
  • 举报
回复
void Main()
{
	List<string> list=new List<string>
	{
			"/Search/Product-abcdsjsjsj.shtml",     
			"/Search/News-abcdsjsjsj.shtml",        
			"/Search/Help-abcdsjsjsj.shtml",        
			"/News/Rss-abcsekdjdkuuss.shtml",       
			"/Help/abcsekdjdkuuss-m-1.shtml",
			"/News/abcsekdjdkuuss-m-2.shtml",       
			"/Product/abcsekdjdkuuss-m-1.shtml",    
			"/Product/ahsjcnsadsjadkjsa.shtml",
			"/News/dhsoafidsfdjs.shtml"
	};
	
	Regex reg=new Regex(@"(?i)(?<=/((?!(?:Product|News|Help|Rss)-).)+(?<!-m-\d))\.s(html)");
	list.ForEach(l=>Console.WriteLine("{0}      {1}",l,reg.Replace(l,".$2")));
	
	/*
	/Search/Product-abcdsjsjsj.shtml      /Search/Product-abcdsjsjsj.shtml
	/Search/News-abcdsjsjsj.shtml      /Search/News-abcdsjsjsj.shtml
	/Search/Help-abcdsjsjsj.shtml      /Search/Help-abcdsjsjsj.shtml
	/News/Rss-abcsekdjdkuuss.shtml      /News/Rss-abcsekdjdkuuss.shtml
	/Help/abcsekdjdkuuss-m-1.shtml      /Help/abcsekdjdkuuss-m-1.shtml
	/News/abcsekdjdkuuss-m-2.shtml      /News/abcsekdjdkuuss-m-2.shtml
	/Product/abcsekdjdkuuss-m-1.shtml      /Product/abcsekdjdkuuss-m-1.shtml
	/Product/ahsjcnsadsjadkjsa.shtml      /Product/ahsjcnsadsjadkjsa.html
	/News/dhsoafidsfdjs.shtml      /News/dhsoafidsfdjs.html
	*/
}
q107770540 2013-08-02
  • 打赏
  • 举报
回复
yourhtml=Regex.Replace(yourhtml,@"(?i)(?<=/((?!(?:Product|News|Help|Rss)-).)+(?<!-m-\d))\.shtml",".html");

62,046

社区成员

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

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

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

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