当前位置:编程学习 > C#/ASP.NET >>

正则表达式啊!

........<img src="/WebSite7/fckeditor/userfiles/qzen1.jpg" />.........
...<img src="/WebSite7/fckeditor/userfiles/qzen2.jpg" />....
...<img src="/WebSite7/fckeditor/userfiles/qzen3.jpg" />....

如上有一篇文章,有很多图片,如何把这篇文章的所有图片的地址换掉,但保留图片名,如下:

........<img src=new+"qzen1.jpg" />.........
...<img src=new+"qzen2.jpg" />....
...<img src=new+"qzen3.jpg" />....


应该是通过正则来实现
string str=".....(文章)"
Regex reg = new Regex(".....");
str = reg.Replace(str, new);

如何写这个正则表达式啊? --------------------编程问答--------------------
        string str = @"........<img src=""/WebSite7/fckeditor/userfiles/qzen1.jpg"" />.........
...<img src=""/WebSite7/fckeditor/userfiles/qzen2.jpg"" />....
...<img src=""/WebSite7/fckeditor/userfiles/qzen3.jpg"" />....
";
        str = Regex.Replace(str, @"(?<=<img src="")([^/""]*/)*", "newfilepath/");
        Response.Write(str);
--------------------编程问答--------------------

void Main()
{
string str=@"........<img src=""/WebSite7/fckeditor/userfiles/qzen1.jpg"" />.........
...<img src=""/WebSite7/fckeditor/userfiles/qzen2.jpg"" />....
...<img src=""/WebSite7/fckeditor/userfiles/qzen3.jpg"" />....";
str=Regex.Replace(str,@"(?is)<img[^>]*?src=(""[^""]+/)([^\.]+\.jpg)""[^>]*/>",delegate (Match m){return m.Value.Replace(m.Groups[1].Value,@"new+""");});
Console.WriteLine(str);
}

/*
........<img src=new+"qzen1.jpg" />.........
...<img src=new+"qzen2.jpg" />....
...<img src=new+"qzen3.jpg" />....

*/
--------------------编程问答--------------------
引用 1 楼 sprc_lcl 的回复:
C# code
        string str = @"........<img src=""/WebSite7/fckeditor/userfiles/qzen1.jpg"" />.........
...<img src=""/WebSite7/fckeditor/userfiles/qzen2.jpg"" />....
...<img src=""/WebSite7/fckedi……


感谢你的热情 只是没有任何反应呢~~~呵呵 --------------------编程问答-------------------- 貌似不需要正则吧
直接替换好了。
string str=".....(文章)";
str = str.Replace("<img src=\"/WebSite7/fckeditor/userfiles/", "new+\"");
--------------------编程问答--------------------
string str=".....(文章)"
Regex reg = new Regex(@"(?<=<img src="")([^/""]*/)*");
str = reg.Replace(str, new);


--------------------编程问答--------------------
引用 4 楼 falconfei 的回复:
貌似不需要正则吧
直接替换好了。
string str=".....(文章)";
str = str.Replace("<img src=\"/WebSite7/fckeditor/userfiles/", "new+\"");


你的话点醒了梦中人 看样子我脑袋的确不灵光 --------------------编程问答--------------------
引用 2 楼 q107770540 的回复:
C# code

void Main()
{
    string str=@"........<img src=""/WebSite7/fckeditor/userfiles/qzen1.jpg"" />.........
...<img src=""/WebSite7/fckeditor/userfiles/qzen2.jpg"" />....
...<img src=""/Web……


这位大侠正则表达式真的很强!! --------------------编程问答-------------------- 我不知道你的new的后面是直接跟“吗?根据你的代码:
........<img src=new+"qzen1.jpg" />.........

如果这样的话:


string YourCode = "/*your code*/";
string YourNewPath
string RegexString = "(?<=src=)[^>]+(?=qzen)";
Regex delPath = new Regex(RegexString);
MatchCollection pathColleciton = delPath.Matches(YourCode);
for (int i = 0; i < pathColleciton.Count; i++)
{
    YourCode.Replace(pathColleciton[i].ToString(),YourNewPath + "\"");
}



这样的话,如果你的new是c:\的话,代码之后的源码变成了
<img src=c:\"qzen2.jpg" /img>

我觉得你的意思是要得到:
<img src="c:\\qzen2.jpg" /img>
这样的话:

string YourCode = "/*your code*/";
string YourNewPath
string RegexString = "(?<=src=”)[^>]+(?=qzen)";
Regex delPath = new Regex(RegexString);
MatchCollection pathColleciton = delPath.Matches(YourCode);
for (int i = 0; i < pathColleciton.Count; i++)
{
    YourCode.Replace(pathColleciton[i].ToString(),YourNewPath);
}


--------------------编程问答--------------------
string result = Regex.Replace(text,@"(?<=<img[^>]+?src=\x22)[^\x22]+?(?=[^/\x22]+\x22)",@"new_path\");
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,