Espressione regolare per ottenere l’SRC delle immagini in C #

Sto cercando un’espressione regolare per isolare il valore src di una img. (So ​​che questo non è il modo migliore per farlo, ma questo è quello che devo fare in questo caso)

Ho una stringa che contiene un semplice codice html, del testo e un’immagine. Ho bisogno di ottenere il valore dell’attributo src da quella stringa. Sono riuscito a isolare l’intero tag fino ad ora.

string matchString = Regex.Match(original_text, @"(]+)>)").Value; 

 string matchString = Regex.Match(original_text, "", RegexOptions.IgnoreCase).Groups[1].Value; 

So che dici di dover usare regex, ma se ansible darò davvero a questo progetto open source una possibilità: HtmlAgilityPack

È davvero facile da usare, l’ho appena scoperto e mi ha aiutato molto, dato che stavo facendo un po ‘più pesante analisi in html. In pratica ti consente di usare XPATHS per ottenere i tuoi elementi.

La loro pagina di esempio è un po ‘obsoleta, ma l’API è davvero facile da capire, e se hai un po’ di familiarità con xpaths, avrai il controllo intorno nel tempo

Il codice per la tua query sarà simile a questo: (codice non compilato)

  List imgScrs = new List(); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(htmlText);//or doc.Load(htmlFileStream) var nodes = doc.DocumentNode.SelectNodes(@"//img[@src]"); s foreach (var img in nodes) { HtmlAttribute att = img["src"]; imgScrs.Add(att.Value) } 

Ho provato ciò che suggeriva Francisco Noriega, ma sembra che l’API di HtmlAgilityPack sia stata modificata. Ecco come l’ho risolto:

  List images = new List(); WebClient client = new WebClient(); string site = "http://www.mysite.com"; var htmlText = client.DownloadString(site); var htmlDoc = new HtmlDocument() { OptionFixNestedTags = true, OptionAutoCloseOnEnd = true }; htmlDoc.LoadHtml(htmlText); foreach (HtmlNode img in htmlDoc.DocumentNode.SelectNodes("//img")) { HtmlAttribute att = img.Attributes["src"]; images.Add(att.Value); } 

Il regex che si desidera dovrebbe essere lungo le linee di:

 () 

Spero che questo ti aiuti.

Questo dovrebbe catturare tutti i tag img e solo la parte src, non importa dove si trova (prima o dopo la class ecc.) E supporta html / xhtml: D

  

puoi anche usare uno sguardo dietro per farlo senza dover estrarre un gruppo

 (?<= 

ricorda di sfuggire alle citazioni, se necessario

Questo è quello che uso per ottenere i tag dalle stringhe:

 ]*> 

Ecco quello che uso:

 (?:(?!\1).)*)\1|(?[^\s>]+))[^>]*?> 

La parte buona è che corrisponde a uno dei seguenti:

    

E può anche abbinare alcuni scenari imprevisti come attributi extra, ad esempio: