如何找出一大段html代码中的图片。对于 正则表达式完全不懂,希望高手能给写个完整的方法。假设 目标html代码为 string a; 需要找出的图片格式为.jpg, .gif, .png.希望高手给出详细代码,谢谢了。

解决方案 »

  1.   

    这个得看你HTML代码的内容才能写出相应的正则表达式。
    然后再得用这个表达去匹配
      

  2.   

    MatchCollection mc = Regex.Match(html,@"(?is)(?<=<img src=(['""])?)(https?)?[^""]+(?:jpg|png|gif)(?=\1)");
    foreach(Match m in mc)
    {}
      

  3.   

     /// <summary>
            /// 图片选择的处理
            /// bmp格式
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnScan_Click(object sender, EventArgs e)
            {
                OpenFileDialog op = new OpenFileDialog();
                //op.InitialDirectory = @"\..\LMS\Src\LMS\Image";
    op.Filter = "图像文件 (*.bmp;*.jpg)|*.bmp;*.jpg";
                if (op.ShowDialog() == DialogResult.OK)
                {
                    //System.IO.Path.GetFileName(op.FileName);//得到文件名
                    //System.IO.Path.GetDirectoryName(op.FileName);//得到路径
                    //bool isTrue = false;
                    try
                    {
                        using (System.Drawing.Image img = System.Drawing.Image.FromFile(op.FileName))
                        {
                            img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                    }
                    catch
                    {
                        lblMsg.Text = cm.GetMessage("E00066");
                        lblMsg.ForeColor = Color.Red;
                        return;
                    }
                    string m = op.FileName.Substring(op.FileName.LastIndexOf("."));
                    if (m == ".bmp" || m == ".jpg")
                    {
                        txtImgPath.Text = Path.GetDirectoryName(op.FileName) + op.FileName.Substring(op.FileName.LastIndexOf("\\"));
                        //txtImgPath.Text = System.Windows.Forms.Application.StartupPath+"\\Image"+ op.FileName.Substring(op.FileName.LastIndexOf("\\"));
                        //ptbImage.Image = Image.FromFile(txtImgPath.Text);
    //ADD BY LIU                     /********** ADD By chenshihu 20101116 ********/
                        //如果改文件为“只读”,则修改它的属性
                        bool isFileReadOnly = false;
                        if (File.GetAttributes(txtImgPath.Text).ToString().IndexOf("ReadOnly") != -1)
                        {
                            isFileReadOnly = true;
                            File.SetAttributes(txtImgPath.Text, FileAttributes.Normal);
                        }
                        /*********************************************/ FileStream files = new FileStream(txtImgPath.Text, FileMode.Open);
    byte[] imgbyte = new byte[files.Length];
    files.Read(imgbyte, 0, imgbyte.Length);
    files.Close();                    //ADD By chenshihu 20101119, 操作完成后,将文件的属性还原为“只读”
                        if (isFileReadOnly)
                        {
                            File.SetAttributes(txtImgPath.Text, FileAttributes.ReadOnly);
                        } MemoryStream ms = new MemoryStream(imgbyte, false);
    ms.Read(imgbyte, 0, imgbyte.Length);
    try
    {
    ptbImage.Image = Image.FromStream(ms, false);
    }
    catch { ptbImage.Image = null; }
                    }
                    else
                    {
                        if (ComLibrary.getAsk(cm.GetMessage("E00016"), "?", "提示", true))
                        {
                            btnScan.PerformClick();
                        }
                    }
                }
            }
      

  4.   

     /// <summary>
            /// 图片选择的处理
            /// bmp格式
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnScan_Click(object sender, EventArgs e)
            {
                OpenFileDialog op = new OpenFileDialog();
                //op.InitialDirectory = @"\..\LMS\Src\LMS\Image";
    op.Filter = "图像文件 (*.bmp;*.jpg)|*.bmp;*.jpg";
                if (op.ShowDialog() == DialogResult.OK)
                {
                    //System.IO.Path.GetFileName(op.FileName);//得到文件名
                    //System.IO.Path.GetDirectoryName(op.FileName);//得到路径
                    //bool isTrue = false;
                    try
                    {
                        using (System.Drawing.Image img = System.Drawing.Image.FromFile(op.FileName))
                        {
                            img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                    }
                    catch
                    {
                        lblMsg.Text = cm.GetMessage("E00066");
                        lblMsg.ForeColor = Color.Red;
                        return;
                    }
                    string m = op.FileName.Substring(op.FileName.LastIndexOf("."));
                    if (m == ".bmp" || m == ".jpg")
                    {
                        txtImgPath.Text = Path.GetDirectoryName(op.FileName) + op.FileName.Substring(op.FileName.LastIndexOf("\\"));
                        //txtImgPath.Text = System.Windows.Forms.Application.StartupPath+"\\Image"+ op.FileName.Substring(op.FileName.LastIndexOf("\\"));
                        //ptbImage.Image = Image.FromFile(txtImgPath.Text);
    //ADD BY LIU                     /********** ADD By chenshihu 20101116 ********/
                        //如果改文件为“只读”,则修改它的属性
                        bool isFileReadOnly = false;
                        if (File.GetAttributes(txtImgPath.Text).ToString().IndexOf("ReadOnly") != -1)
                        {
                            isFileReadOnly = true;
                            File.SetAttributes(txtImgPath.Text, FileAttributes.Normal);
                        }
                        /*********************************************/ FileStream files = new FileStream(txtImgPath.Text, FileMode.Open);
    byte[] imgbyte = new byte[files.Length];
    files.Read(imgbyte, 0, imgbyte.Length);
    files.Close();                    //ADD By chenshihu 20101119, 操作完成后,将文件的属性还原为“只读”
                        if (isFileReadOnly)
                        {
                            File.SetAttributes(txtImgPath.Text, FileAttributes.ReadOnly);
                        } MemoryStream ms = new MemoryStream(imgbyte, false);
    ms.Read(imgbyte, 0, imgbyte.Length);
    try
    {
    ptbImage.Image = Image.FromStream(ms, false);
    }
    catch { ptbImage.Image = null; }
                    }
                    else
                    {
                        if (ComLibrary.getAsk(cm.GetMessage("E00016"), "?", "提示", true))
                        {
                            btnScan.PerformClick();
                        }
                    }
                }
            }
      

  5.   


    基本上 格式是这样的 <IMG border=0 alt=1.JPG src=\"http://10.66.44.100:30001/FCKeditor/1001003/zhudj20110114081811.JPG\" width=600></P>
    <img src="img/2.jpg" />
      

  6.   


    这个正则表达式取不到值。 另外 应该是=regex.matches 不是 match