URL正则替换

飘动的风 2008-06-06 09:40:31
字符串类型为:

<a href="/china/Arts/Movies/">Movies</a>

我要求替换成:

<a href="/china/Arts/Movies.aspx">Movies</a>


但要求
如:
<a href="http://www.sina.com.cn/news">Movies</a>

不替换掉.

也就是带有"http://"头的除外.

...全文
141 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainsome 2008-06-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 seagull2 的帖子:]
字符串类型为:
<a href="/china/Arts/Movies/">Movies </a>
我要求替换成:
<a href="/china/Arts/Movies.aspx">Movies </a>
但要求
如:
<a href="http://www.sina.com.cn/news">Movies </a>
不替换掉.
也就是带有"http://"头的除外.
[/Quote]

function Replace(sToChange)
{
var reMatch=/^(<a\s+href="\/[^<]+\/[^<]+/[^<]+)\/(")$/ig;
return sToChange.replace(reMacth,"$1.aspx$2");
}
飘动的风 2008-06-06
  • 打赏
  • 举报
回复
刚才走开了.
我测试一下,先.

行的话,马上给分.
HimeTale 2008-06-06
  • 打赏
  • 举报
回复
忘转义了
Regex.Replace("url",@"(?<=<a\s+href=""(/[^/]*)*)/(?="">)",".aspx");
HimeTale 2008-06-06
  • 打赏
  • 举报
回复
Regex.Replace("url",@"(?<=<a\s+href="(/[^/]*)*)/(?=">)",".aspx");
xyz1982510 2008-06-06
  • 打赏
  • 举报
回复
楼主...
解决了吗??

给我你的邮箱...

public static MatchCollection GetMcSigin(string regex,string html)
{
return Regex.Matches(html,regex,RegexOptions.Compiled|RegexOptions.IgnoreCase|RegexOptions.Multiline|RegexOptions.Singleline);
}
先用这个方法
public static string GetChildLinkContent(string zzpattern,string html)
{
StringBuilder sb = new StringBuilder();
MatchCollection mc = DownHTML.GetMcSigin(zzpattern,html);
for(int i=0;i<mc.Count;i++)
{
sb.Append(mc[i].Result("${content}"));
sb.Append("\r\n");
}
string linkarea = sb.ToString().Replace("<p>","").Replace("</p>","");
return linkarea;
}
看看是否能看懂...看不懂就加我QQ:934929404
王集鹄 2008-06-06
  • 打赏
  • 举报
回复
参考如下代码:
string s = @"<a href=""/china/Arts/Movies/"">Movies </a>" +
@"<a href=""http://www.sina.com.cn/news"">Movies </a>";
Console.Write(Regex.Replace(s, @"(<a\s*href="")((?!http).*?)/("">)", "$1$2.aspx$3"));


[Quote=输出]<a href="/china/Arts/Movies.aspx">Movies </a><a href="http://www.sina.com.cn/news">Movies </a>[/Quote]
HimeTale 2008-06-06
  • 打赏
  • 举报
回复
啊啊啊,我来了
xyz1982510 2008-06-06
  • 打赏
  • 举报
回复

[Quote=引用 4 楼 xyz1982510 的回复:]

试着分为两次替换会好一些...

第一次用函数replace()...(C#自带方法)

第二次用你原来的正则表达式替换成XXX.aspx

具体第二次的正则写法应该会写吧...
[/Quote]

也就是说...第一次用来判断是否有"http://"的URL格式...
第二次再写正则
xyz1982510 2008-06-06
  • 打赏
  • 举报
回复

试着分为两次替换会好一些...

第一次用函数replace()...(C#自带方法)

第二次用你原来的正则表达式替换成XXX.aspx

具体第二次的正则写法应该会写吧...
飘动的风 2008-06-06
  • 打赏
  • 举报
回复
是啊,测试了N久了.

还是不行.
priwilliam 2008-06-06
  • 打赏
  • 举报
回复
有难度 帮顶
飘动的风 2008-06-06
  • 打赏
  • 举报
回复
有人能帮上忙吗.

这个上替换的正则表达式怎么写.

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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