正则表达式解析并替换C#/.NET中的img src?
啊, 我有个问题,看;我有这样的字符串:正则表达式解析并替换C#/.NET中的img src?,c#,regex,image,expression,C#,Regex,Image,Expression,啊, 我有个问题,看;我有这样的字符串: 它们的格式不一致 我需要像这样解析字符串,并返回以下内容: 变化: 除去图像文件所在的即时目录以外的所有内容 该目录不是子目录,而是在文件名前加上前缀 因此,如果文件当前位于/blabla/bla/blaaaah/pickles/pickle.png中 然后我希望IMG SRC属性为pickles-pickle.png 现在,我一直在尝试用正则表达式来做这个,但是3个小时后,我发现了一些关于我自己的东西。。。我对regex很在行。我可能会在这里呆上几
它们的格式不一致
我需要像这样解析字符串,并返回以下内容:
变化:
注意:我把它标记为“家庭作业”,但它不是家庭作业。我自愿在下班后工作,以拯救公司20万美元。这是(对我来说)令人难以置信的复杂谜题的最后一块。当然,我看不到那20万美元中的一分钱,但我做这件事看起来不错
(?(?(?(?)要获取标签,我建议使用。它比在整个HTML页面上使用regex更安全
(?<=src=)"[^" ]*\/(?=[^\/"]*\/)
使用类似的方法获取图像节点:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var imgs = doc.DocumentNode.SelectNodes("//img");
使用类似的方法获取/设置属性:
foreach (var img in imgs)
{
string orig = img.Attributes["src"].Value;
//do replacements on orig to a new string, newsrc
img.SetAttributeValue("src",newsrc);
}
那么,你应该做什么样的替换呢?我同意使用正则表达式要优雅得多。像这样的东西毕竟是它的用途
像这样的事情应该可以做到:
string s = @"/sites/it_kb/SiteAssets/Pages/exploding%20the%20VDI%20vDesktop/VDI3.PNG";
string n = Regex.Replace(s,@"(.*?)\/([^\/]*?)\/([^\/]*?)$",@"/$2-$3");
您可以使用一些资源来学习C#Regexing:
要获得标签,我建议使用。它比在整个HTML页面上使用正则表达式更安全
使用类似的方法获取图像节点:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var imgs = doc.DocumentNode.SelectNodes("//img");
使用类似的方法获取/设置属性:
foreach (var img in imgs)
{
string orig = img.Attributes["src"].Value;
//do replacements on orig to a new string, newsrc
img.SetAttributeValue("src",newsrc);
}
那么,你应该做什么样的替换呢?我同意使用正则表达式要优雅得多。像这样的东西毕竟是它的用途
像这样的事情应该可以做到:
string s = @"/sites/it_kb/SiteAssets/Pages/exploding%20the%20VDI%20vDesktop/VDI3.PNG";
string n = Regex.Replace(s,@"(.*?)\/([^\/]*?)\/([^\/]*?)$",@"/$2-$3");
您可以使用一些资源来学习C#Regexing:
要获得标签,我建议使用。它比在整个HTML页面上使用正则表达式更安全
使用类似的方法获取图像节点:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var imgs = doc.DocumentNode.SelectNodes("//img");
使用类似的方法获取/设置属性:
foreach (var img in imgs)
{
string orig = img.Attributes["src"].Value;
//do replacements on orig to a new string, newsrc
img.SetAttributeValue("src",newsrc);
}
那么,你应该做什么样的替换呢?我同意使用正则表达式要优雅得多。像这样的东西毕竟是它的用途
像这样的事情应该可以做到:
string s = @"/sites/it_kb/SiteAssets/Pages/exploding%20the%20VDI%20vDesktop/VDI3.PNG";
string n = Regex.Replace(s,@"(.*?)\/([^\/]*?)\/([^\/]*?)$",@"/$2-$3");
您可以使用一些资源来学习C#Regexing:
要获得标签,我建议使用。它比在整个HTML页面上使用正则表达式更安全
使用类似的方法获取图像节点:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var imgs = doc.DocumentNode.SelectNodes("//img");
使用类似的方法获取/设置属性:
foreach (var img in imgs)
{
string orig = img.Attributes["src"].Value;
//do replacements on orig to a new string, newsrc
img.SetAttributeValue("src",newsrc);
}
那么,你应该做什么样的替换呢?我同意使用正则表达式要优雅得多。像这样的东西毕竟是它的用途
像这样的事情应该可以做到:
string s = @"/sites/it_kb/SiteAssets/Pages/exploding%20the%20VDI%20vDesktop/VDI3.PNG";
string n = Regex.Replace(s,@"(.*?)\/([^\/]*?)\/([^\/]*?)$",@"/$2-$3");
您可以使用一些资源来学习C#Regexing:
更换此
(?i)(?<=<img\s[\s\S]*?src=")(?:[^"]*\/)+(?=[^"]*\/)([^\/]*)\/([^"]+)
替换这个
(?i)(?<=<img\s[\s\S]*?src=")(?:[^"]*\/)+(?=[^"]*\/)([^\/]*)\/([^"]+)
替换这个
(?i)(?<=<img\s[\s\S]*?src=")(?:[^"]*\/)+(?=[^"]*\/)([^\/]*)\/([^"]+)
替换这个
(?i)(?<=<img\s[\s\S]*?src=")(?:[^"]*\/)+(?=[^"]*\/)([^\/]*)\/([^"]+)
这是相当不安全的,考虑到其他东西可能有/在其中,你应该添加“src=”infront@Vajura它将只针对src=”“
。考虑到其他东西中可能有/你应该添加“src=”,这是相当不安全的infront@Vajura它将只针对src=“”
。考虑到其他东西中可能有/你应该添加“src=”,这是非常不安全的infront@Vajura它将只针对src=”“
。考虑到其他东西中可能有/你应该添加“src=”,这是相当不安全的infront@Vajura它将只针对src=“”
。您可以使用正则表达式解析html,但这不是最佳做法。查看您为什么要这样做。您可以使用正则表达式解析html,但这不是最佳做法。查看您为什么要这样做。您可以使用正则表达式解析html,但这不是最佳做法。查看您为什么要这样做。您可以使用正则表达式解析html,但这不是最佳做法。查看您为什么要使用正则表达式我会做的。