Regex 图片网址 = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);
上面正则好像不太正确,不是图片的网址也存在,正确的是怎么写?
上面正则好像不太正确,不是图片的网址也存在,正确的是怎么写?
@"(?i)<img[^>]*?src=(['""])(?<imgUrl>[^'""]+?\.(jpe?g|gif|png|bmp))\1[^>]*?>"
{
IDataObject 粘贴数据 = Clipboard.GetDataObject();
Object 网址 = 粘贴数据.GetData(DataFormats.Html);
List<string> 图片集 = new List<string>();
Regex 图片网址 = new Regex(@"(?i)<img[^>]*?src=(['""])(?<imgUrl>[^'""]+?\.(jpe?g|gif|png|bmp|tiff|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw))\1[^>]*?>", RegexOptions.IgnoreCase);
if (网址 != null)
{
MatchCollection 集合 = 图片网址.Matches(网址.ToString());
foreach (Match 元素 in 集合)
图片集.Add(元素.Groups["imgUrl"].Value);
foreach (string 图址 in 图片集)
{
Image 获取网络图片 = Image.FromStream(WebRequest.Create(图址).GetResponse().GetResponseStream());
Clipboard.SetImage(获取网络图片); if (粘贴数据.GetDataPresent(DataFormats.Bitmap)) 富文本编辑.Paste();
}
}
}));这种方法能把图片添加在文章最后,然后通过移动或剪切图片到正确位置,虽说有些不便,但还是差强人意可以编辑,何况文字内容有时也需要整理后保,这个方法最大的遗憾就是图片不能粘贴在原位;
如果谁有方法能把图片粘贴在原位就完美了,谁有代码的话拿出来共享一下,还有看看我这个代码是否可以优化。
{
this.BeginInvoke(new Action(() =>
{
try
{
/*上面代码这样捕获404异常通过WebException*/
}
catch (WebException Ts)
{
MessageBox.Show("请重新选择图片!" + Ts.ToString().Substring(0, Ts.ToString().IndexOf("在") - 1), "遗憾!无法获取图片数据?");
}
}));
}