求:替换img src="http://qq.asdc.com/asdf/asdf.gif"中域名为“/”的正则表达式

natfit 2005-07-05 01:43:27
src可能为:
http://www.asdx.com/asdf/asdf.gif
/asdf/asdf.gif
asdf/asdf.gif
asdf.gif

如果是第一种,就将其改了为/asdf/asdf.gif,如果是后三种,则不处理

如果不能一起搞定,可先搞定:把http://www.asdf.com/替换为/

我用正则表达式,不是取到了http:就是http://www.asdx.com/asdf/,无法取定位到第一个/

多谢!
...全文
214 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
O西瓜 2005-07-05
  • 打赏
  • 举报
回复
不客气啊,呵呵
natfit 2005-07-05
  • 打赏
  • 举报
回复
用lqbbduck(无籽西瓜) 的方法搞定:可以适应各种情况!

十分感谢lqbbduck(无籽西瓜)的无私帮助!


public void a()
{
string pattern="http://[^/]+/(?<con>\\S*\\s*asdf.gif)";
string str="adasds<img src='http://www.asdx.com/asdf/asdf.gif'>cbcbcvb<img src=sdgdg)";
string str2="/${con}";

string ss=Regex.Replace(str,pattern,str2,RegexOptions.IgnoreCase);


}
fanweiwei 2005-07-05
  • 打赏
  • 举报
回复
only up
natfit 2005-07-05
  • 打赏
  • 举报
回复
现在尝到了怎样用分组和替换了,我一直不会写$
natfit 2005-07-05
  • 打赏
  • 举报
回复
我用笨办法实现:

public void a()
{
string pattern="src\\s*=[\"\'\\s*]((http://)*[^/]+/)\\S*\\s*asdf.gif";
string str="adasds<img src='http://www.asdx.com/asdf/asdf.gif'>cbcbcvb<img src=sdgdg)";
MatchEvaluator me=new MatchEvaluator(b);
string ss=Regex.Replace(str,pattern,me);
textBox1.Text =ss;

}
public string b(Match m)
{

string str=m.Value ;

textBox2.Text =str;
int i=0;
for (int j=0;j<=2;j++)
{
i=str.IndexOf("/",i+1);
}
if (i<0)
{
return "";
}
else
{
string t="";

if (str.LastIndexOf("\"",7)>-1)
{
t="\"";
}
else
{
if (str.LastIndexOf("\'",7)>-1)
{
t="\'";
}
}

str="src="+t+str.Substring(i,str.Length-i);
return str;
}

}
O西瓜 2005-07-05
  • 打赏
  • 举报
回复
public string replace(string str)
{
string sp = @"\<img src=http://qq.asdc.com(?<content>.*?)[/>]";
string sr = "<img src=/${content}";
string s2;
do
{
s2 = str;
str = Regex.Replace(s2,sp , sr, RegexOptions.IgnoreCase);
}
while (s2 != str);
return str;
}
natfit 2005-07-05
  • 打赏
  • 举报
回复
我用lqbbduck(无籽西瓜) 的方式实现了大部分功能,但是,由于img src=有多种形式:

<img src="http://www.asdf.com/asdf/asdf/asdf.gif">
<img src='http://www.asdf.com/asdf/asdf/asdf.gif'>
<img src=http://www.asdf.com/asdf/asdf/asdf.gif>

前面两种已经实现,用[\'\"]可以截取,但最后没有的一种不知道该怎么办?
natfit 2005-07-05
  • 打赏
  • 举报
回复
我想把<img src="http://qq.asdc.com/asdf/asdf.gif">
替换成<img src="/asdf/asdf.gif">

这样不管什么域名,在任何位置,都可以调用这个页面
O西瓜 2005-07-05
  • 打赏
  • 举报
回复
我不是很明白你的意思,你是想把
http://www.asdx.com/asdf/asdf.gif
替换成什么样子?
natfit 2005-07-05
  • 打赏
  • 举报
回复
我的函数:

cont=System.Text.RegularExpressions.Regex.Replace(cont ,strReg+strT,"",System.Text.RegularExpressions.RegexOptions.ExplicitCapture );

其中,cont是一个页面的源代码,strReg是“src\s*=\s*[\"\']((http://)*[^/]+/)\S*\s*”
strT是文件名,动态的

该如何写?
natfit 2005-07-05
  • 打赏
  • 举报
回复
string pattern=@"http://[^/]*"不能这样用,我必须要定位到asdf.gif,因为页面中还有其他的链接和图片

我的表达式:src\s*=\s*[\"\']((http://)*[^/]+/)\S*\s*asdf.gif

能够取到值,但我不知道该怎样替换()中的值
O西瓜 2005-07-05
  • 打赏
  • 举报
回复
public void a()
{
string pattern=@"http://[^/]*";
string str="http://www.asdx.com/asdf/asdf.gif";
MatchEvaluator me=new MatchEvaluator(b);
string ss=Regex.Replace(str,pattern,me);
Console.WriteLine(ss);
}
public string b(Match m)
{
Console.WriteLine(m.Value);
return "";
}
natfit 2005-07-05
  • 打赏
  • 举报
回复
整个regex该怎样写?
速马 2005-07-05
  • 打赏
  • 举报
回复
(.*/)*
natfit 2005-07-05
  • 打赏
  • 举报
回复
我用src=[\"\']((http://)*[^/]+)取到了:http://www.asdf.com,但一替换就把src也替换掉了

怎样才能只替换http://www.asdf.com这一部分?
natfit 2005-07-05
  • 打赏
  • 举报
回复
这是取域名的
有没有简单点的,比如直接取到//后面的第一个/
mathsword 2005-07-05
  • 打赏
  • 举报
回复
^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9\-\._]+(\.[a-zA-Z0-9\-\._]+){2,}(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$

62,047

社区成员

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

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

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

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