c#Regex img src
我想从html中的img src获取图像的链接。 我将一个html字符串读入一个方法,该方法返回图像URL的arraylist 我将html字符串和网页的url传递到方法中 我需要一些关于正则表达式的帮助来获取带有扩展名的图像名称。 如果您能帮助匹配html字符串,那将是一个额外的好处。 我会接受正确的答案或接近它,谢谢大家 我听说过HTML解析器,但我更愿意使用这种方式,谢谢 以下是我的方法:c#Regex img src,c#,regex,image,C#,Regex,Image,我想从html中的img src获取图像的链接。 我将一个html字符串读入一个方法,该方法返回图像URL的arraylist 我将html字符串和网页的url传递到方法中 我需要一些关于正则表达式的帮助来获取带有扩展名的图像名称。 如果您能帮助匹配html字符串,那将是一个额外的好处。 我会接受正确的答案或接近它,谢谢大家 我听说过HTML解析器,但我更愿意使用这种方式,谢谢 以下是我的方法: private ArrayList GetImageLinks(String inputHTM
private ArrayList GetImageLinks(String inputHTML, String link)
{
ArrayList imageLinks = new ArrayList();
var regex = new Regex(@"<img.*?src=[\"'](.+?)[\"'].*?");
//using http://gskinner.com/RegExr/ this regex seems to get: <img src="beach.png" for example. while I need just beach.png.
//match the regex to the html and get all the image links like: image5.png
//link = inputHTML + link
//add new link to arraylist
return imageLinks;
}
private ArrayList GetImageLinks(String-inputtml,String-link)
{
ArrayList imageLinks=新建ArrayList();
var regex=new regex(@“提取后,我不明白您想对图像源做什么
以下是如何提取图像链接
static IEnumerable<String> GetImageLinks(String inputHTML, String someLink)
{
const string pattern = @"<img\b[^\<\>]+?\bsrc\s*=\s*[""'](?<L>.+?)[""'][^\<\>]*?\>";
foreach (Match match in Regex.Matches(inputHTML, pattern, RegexOptions.IgnoreCase))
{
var imageLink = match.Groups["L"].Value;
/* Do something from your image link here*/
yield return imageLink;
}
}
静态IEnumerable GetImageLinks(字符串inputtml,字符串someLink)
{
常量字符串模式=@“+?)[“”][^\]*?\>”;
foreach(Regex.Matches中的匹配(inputtml、pattern、RegexOptions.IgnoreCase))
{
var imageLink=match.Groups[“L”]值;
/*从这里的图像链接中执行一些操作*/
收益回报率;
}
}
您可以使用WebBrowser
来代替字符串操作
private string HtmlUpdateWithImage(string stringHtml)
{
System.Windows.Forms.WebBrowser browser = new System.Windows.Forms.WebBrowser();
browser.Navigate("about:blank");
HtmlDocument doc = browser.Document;
doc.Write(stringHtml);
if (null != browser.Document && null != browser.Document.Images && browser.Document.Images.Count > 0)
{
// Here you can get the image list browser.Document.Images
foreach (System.Windows.Forms.HtmlElement item in browser.Document.Images)
{
// To get file path for each image
string imageFilePath = item.GetAttribute("src");
// Or either you can set those values
item.SetAttribute("src","testPath");
}
}
return "<HTML>" + browser.Document.Body.OuterHtml + "</HTML>";
}
私有字符串HtmlUpdateWithImage(字符串stringHtml)
{
System.Windows.Forms.WebBrowser browser=新建System.Windows.Forms.WebBrowser();
浏览。导航(“关于:空白”);
HtmlDocument doc=browser.Document;
doc.Write(stringHtml);
if(null!=browser.Document&&null!=browser.Document.Images&&browser.Document.Images.Count>0)
{
//您可以在此处获得图像列表browser.Document.Images
foreach(浏览器、文档、图像中的System.Windows.Forms.HtmleElement项)
{
//获取每个图像的文件路径
字符串imageFilePath=item.GetAttribute(“src”);
//或者您可以设置这些值
SetAttribute(“src”、“testPath”);
}
}
返回“+browser.Document.Body.OuterHtml+”;
}
如果您只想获取图像的名称,只需使用类路径的方法GetFileName():
string internetAddress=@"http://hello.com/a/s/s/fff.jpg";
string takeName=Path.GetFileName(internetAddress);
用正则表达式解析HTML,可能会出什么问题。没有理由不使用HtmlAgilityPack。如果你真的想要正则表达式,你应该自己做,因为至少一个月后你看到它时,你会有一点机会理解代码中的正则表达式。可能的重复-甚至包含一些正则表达式解决方案的pression版本…您在获取正确的正则表达式时遇到问题,这一事实应该是一个警钟。解析标记的库可以解释某些标记包含的可怕结构。但是,正则表达式不能。