Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#Regex img src_C#_Regex_Image - Fatal编程技术网

c#Regex img src

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

我想从html中的img src获取图像的链接。 我将一个html字符串读入一个方法,该方法返回图像URL的arraylist

我将html字符串和网页的url传递到方法中

我需要一些关于正则表达式的帮助来获取带有扩展名的图像名称。 如果您能帮助匹配html字符串,那将是一个额外的好处。 我会接受正确的答案或接近它,谢谢大家

我听说过HTML解析器,但我更愿意使用这种方式,谢谢

以下是我的方法:

   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版本…您在获取正确的正则表达式时遇到问题,这一事实应该是一个警钟。解析标记的库可以解释某些标记包含的可怕结构。但是,正则表达式不能。