RegEx pour obtenir href et de la src à partir du contenu HTML?
Je suis en train d'extraire href src et les liens à partir d'une chaîne HTML. Selon ce post, J'ai été en mesure d'obtenir l'image de la partie. Quelqu'un peut-il aider à ajuster l'expression régulière pour inclure le href URL dans la collection de trop?
public List<string> GetLinksFromHtml(string content)
{
string regex = @"<img[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>";
var matches = Regex.Matches(content, regex, RegexOptions.IgnoreCase | RegexOptions.Singleline);
var links = new List<string>();
foreach (Match item in matches)
{
string link = item.Groups[1].Value;
links.Add(link);
}
return links;
}
Pourquoi ne pas simplement utiliser un analyseur HTML pour cela?
Je ne veux pas avoir à déployer une bibliothèque. Il est censé être une lumière et d'une méthode rapide, je peux facilement tomber dans n'importe quel projet.
Vous devriez penser à utiliser une bibliothèque. Pour un hack Regex HTML et pourrait fonctionner, mais si vous allez l'utiliser plus souvent, vous aurez un jour essayer d'analyser html avec le mal de commentaires et de javascript intégré et tout va exploser.
Une expression régulière est un mauvais choix pour les sauvages HTML. Toutefois, si vous pouvez garantir à 100% que les balises que vous serez d'analyse sont les vôtres et sont tout à fait valable, les balises d'image vous pouvez être en mesure de sortir avec elle. Peu importe, HtmlAgilityPack est la solution parfaite.
Je ne veux pas avoir à déployer une bibliothèque. Il est censé être une lumière et d'une méthode rapide, je peux facilement tomber dans n'importe quel projet.
Vous devriez penser à utiliser une bibliothèque. Pour un hack Regex HTML et pourrait fonctionner, mais si vous allez l'utiliser plus souvent, vous aurez un jour essayer d'analyser html avec le mal de commentaires et de javascript intégré et tout va exploser.
Une expression régulière est un mauvais choix pour les sauvages HTML. Toutefois, si vous pouvez garantir à 100% que les balises que vous serez d'analyse sont les vôtres et sont tout à fait valable, les balises d'image vous pouvez être en mesure de sortir avec elle. Peu importe, HtmlAgilityPack est la solution parfaite.
OriginalL'auteur TruMan1 | 2011-11-09
Vous devez vous connecter pour publier un commentaire.
Okie Doke! Sans une "bibliothèque", et "rapide et léger", ici ya go:
ou C# string:
Celui-ci saisit le nom de la balise (
a
ouimg
) dans le groupe "Nom_du_tag", le type d'URL (href
ousrc
) dans le groupe "URL_Type", et l'URL dans le groupe "URL" (je sais, je suis un peu plus créatif avec les noms de groupe).Il gère les deux types de guillemets (
"
ou'
), et même si n'importe quel type de guillemets dans une URL doit être encodée dans d'autres entités, il ignore tout seul échappé, les guillemets\'
et\"
.Il n'ignore pas les balises non fermées (donc HTML incorrect), il va trouver une ouverture pour l'une des balises telles que
<a
ouimg
, puis passez à l'ignorer à tout sauf à un supérieur (>
) jusqu'à ce qu'il trouve l'URL correspondante type de l'attribut (href
poura
balises etsrc
pourimg
balises), puis en fonction du contenu. Puis, il se ferme et ne vous inquiétez pas du reste de la balise!Laissez-moi savoir si vous souhaitez me faire tomber pour vous, mais voici un échantillonnage des matchs il a fait pour cette page:
Il a trouvé un total de 140 balises (je suis en supposant que des affiches supplémentaires augmentera un peu)
OriginalL'auteur Code Jockey
J'ai juste esquissé ce réel rapide Expression Regex, Mais testé et de travail, dites-moi si cela convient à vos besoins. (url et img, sont nom-regroupés afin qu'ils soient faciles à récupérer)
Vous pouvez également faire des captures d'images sans lien en ajoutant l' ? signe de la
<a>
et</a>
balises, comme suit:Shai
De ses pas de la difficulté à définir avec le (\'|\") 🙂 je suis un grand décourager de regex pour analyse html, mais il a demandé de trouver une autre solution que j'ai essayé de fournir.
C'est pour .Net, je le crois, autant que je sache, .Net ne prend pas en charge la
(?P<xxxx>...)
de noms de groupe de construction, n'ont - ils changé? ou ai-je toujours été mauvais?Je ne suis pas de la .NET tout le monde 🙂 j'ai juste donné mon coup d'Expressions Régulières. Il suffit de modifier la. J'ai vu quelqu'un ici à l'aide de la (?<>) de la syntaxe, de sorte que dans ce cas, il suffit de retirer le P pour faire le travail.
regexes soutien nommé groupes de capture. La syntaxe est presque correct, juste besoin d'être sans le
P
.OriginalL'auteur Shai Mishali
Tellement monstrueuse! , Car l'analyse de html par des expressions régulières est le mal
OriginalL'auteur Vitaly Slobodin
Code ci-dessous peut vous aider à obtenir tous les liens en html, après les obtenir vous pouvez obtenir plus de détails de l'élément en lien:
OriginalL'auteur Wilson Wu
Il y a plusieurs endroits où le lien et l'image peut être trouvé.
vérifiez ici
vérifiez ici
vérifiez ici
OriginalL'auteur Frank Myat Thu