我尝试了几种组合,但接缝最终会插入每个可能的标志。
我有一个看起来像
的正则表达式<img[^>]*?src=["']([\w:\\\/\s\S]*[.a-zA-Z]{3,})[^>]*?>
我想从图像中选择src部分。
示例网址如
Sample <img alt="foo" src="c:\my-folder\contains.dot\and space\in myImagePath.png" title="bar" >
但是这也选择了标题,我想停在src的结尾"
。
我还尝试了一些更多的安排,但结果相同或没有......
当第一个"
被关闭时,是否会在"
停留?
原始数据
从VS2017控制台复制的原始HTMLCode :
<style>*{font-family: Arial, Helvetica, sans-serif;}</style><p><img src=\"C:\\Users\\JustMe\\Desktop\\de mo1.png\" width=\"1635\" height=\"989\" /></p>\n<p> </p>
我原来使用的代码 :
using System.Text.RegularExpressions;
...
public List<string[]> FetchLinksFromSource(string htmlSource)
{
List<string[]> links = new List<string[]>();
int i = 1;
string regexImgSrc = @"<img[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>";
MatchCollection matchesImgSrc = Regex.Matches(htmlSource, regexImgSrc, RegexOptions.IgnoreCase | RegexOptions.Singleline);
foreach (Match m in matchesImgSrc)
{
string[] matches = new string[3];
string href = m.Groups[1].Value;
matches[0] = href;
matches[1] = new Uri(href).ToString();
matches[2] = "imageID_" + i++.ToString();
links.Add(matches);
}
return links;
}
如果图像或路径有空格,此代码会崩溃!