2015-05-14 44 views
1

我有一個包含一個鏈接,看起來像這樣的字符串:正則表達式忽略來自HTML標籤的內容空白

string source = "<img src='ftp://c//hafiz hussain//appdata//images//image.bmp' />" 

我用下面的正則表達式來刪除src內容:

string regexSrc = @"<img[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>"; 
MatchCollection matchesImgSrc = Regex.Matches(source , regexSrc, RegexOptions.IgnoreCase | RegexOptions.Singleline); 

只有在文件夾名稱沒有空格的情況下,它才能正常工作。對於上述情況,matchesImgSrc[1].Groups[1].Value僅匹配到'ftp://c//hafiz'

忽略空白後的內容。

+1

除去第來自焦炭類的空間。最好使用一個html解析器。 –

回答

1

,我可以看到你有一個XML兼容HTML。因此,我建議使用XElement來完成這項任務。

var source = "<img src='ftp://c//hafiz hussain//appdata//images//image.bmp' />"; 
var elt2 = XElement.Parse(source); 
var imgs = elt2.DescendantsAndSelf("img"); 
foreach (var im in imgs) 
{ 
    var att = im.Attributes().Where(p => p.Name.LocalName.ToLower() == "src"); 
    if (att != null) 
    { 
     im.SetAttributeValue("src", string.Empty); 
    } 
} 
// Converting back to string to see the result 
var resst = elt2.ToString(); 

輸出:

enter image description here

甲正則表達式溶液可以用作回退:

var source = "<img src='ftp://c//hafiz hussain//appdata//images//image.bmp' />"; 
var regexSrc = @"(?<=<img[^>]*?)src\s*=\s*[""']?([^'"">]+)[ '""](?=[^>]*?>)"; 
var reslt = Regex.Replace(source, regexSrc, "src=\"\""); 

輸出:<img src="" />

+0

如果我是你,我會使用基於'XElement'的解決方案作爲主要解決方案,而只有在正確/無效XML的情況下才使用正則表達式解決方案。 –

相關問題