Imはいくつかの組み合わせを試しましたが、可能なすべての記号を挿入することで終わります。空白で画像を選択する正規表現
私は、画像からのsrcの部分を選択したい
<img[^>]*?src=["']([\w:\\\/\s\S]*[.a-zA-Z]{3,})[^>]*?>
のように見える正規表現を持っています。
サンプルURLが
Sample <img alt="foo" src="c:\my-folder\contains.dot\and space\in myImagePath.png" title="bar" >
のように見えるが、これは、同様のタイトルを選択し、私はSRCの最後"
で停止します。
私もいくつかのより多くのconstelationsを試してみましたが、同じ、あるいは全く結果と....
ありますが、最初の"
がmachedたとき"
で停止しましたか? 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;
}
イメージまたはパスに空白が含まれていると、このコードがクラッシュします。
FYI: '[\ w:\\\/\ s \ S] *' == '[\ s \ S] *' == *すべて* –
使いやすく[^ \ "] +:文字列入力=" "; \\ s + src = \ "(? 'src' [^ \"] +)\ "\\ s + title(文字列パターン=" alt = = \ "(? 'title' [^ \"] +) "; マッチマッチ= Regex.Match(入力、パターン); Console.WriteLine( "alt = '{0}'、src = '{1}'、title = '{2}'"、 match.Groups ["alt"]。値、 match.Groups [ src "]。値、 match.Groups [" title "]。値); Console.ReadLine(); – jdweng
このページで回答した正規表現のパターンを使用していますか?それらのどれもがスペースでクラッシュすることはありません! @Dwza – MohaMad