0 votes

Utilisation de regexlite pour analyser <a href src="">des liens</a> à partir d'une NSString

Je suis en train d'écrire une application iPhone qui doit extraire des données HTML brut d'un site web et récupérer l'url des liens et le texte affiché d'un lien.

Par exemple dans le lien [Cliquez ici pour aller sur google](www.google.com)

Il récupérerait url = www.google.com texte = Cliquez ici pour aller sur google

Je suis en train d'utiliser la bibliothèque regexlite mais je ne suis pas du tout un expert en expressions régulières, j'ai essayé plusieurs choses pour que cela fonctionne.

Je veux utiliser le code suivant

NSString *searchString  = @"$10.23, $1024.42, $3099";
NSString *regexString   = @"\\$((\\d+)(?:\\.(\\d+)|\\.?))";
NSArray  *capturesArray = NULL;

capturesArray = [searchString arrayOfCaptureComponentsMatchedByRegex:regexString];

Ma question est donc : est-ce que quelqu'un peut me dire quelle serait la searchString pour analyser les liens HTML ou me diriger vers un tutoriel clair sur le fonctionnement de regexlite ? J'ai essayé de lire la documentation sur http://regexkit.sourceforge.net/RegexKitLite/ et je ne la comprends pas.

Merci d'avance,

Zen_silence

4voto

bbum Points 124887

En résumé, ne faites pas ça. Les expressions régulières sont un moyen horrible de parser du HTML. Les documents HTML sont hautement structurés avec une hiérarchie de balises dont le contenu peut s'étendre sur plusieurs lignes sans que ces lignes n'apparaissent dans la forme rendue.

En supposant un HTML bien structuré, vous pouvez utiliser un parseur XML.

En particulier, l'iPhone propose le NSXMLParser et quelques bons exemples d'utilisation de celui-ci.

0voto

SearchString serait tout le texte HTML brut, et regexString devrait être plus comme :

NSString *regexString = @"href=\"(.*)\">(.*)<";

Ensuite, vous utiliseriez des correspondances de capture pour extraire match1 et match2, en répétant la correspondance à travers le texte HTML en utilisant l'option Range pour la recherche afin de sauter ce que vous avez déjà recherché...

Je ne sais pas ce que vous essayez de faire avec searchString et les numéros cependant.

0voto

Zen_silence Points 169

Si quelqu'un d'autre a la même question, la chaîne regex pour correspondre à un lien html est

NSString *regexString = @"]*)>([^>]*) - ";

[

Le livre Oreilly "Mastering Regular Expressions" m'a aidé à résoudre rapidement ce problème, je le recommande vivement si vous essayez d'utiliser des expressions régulières.

](([^)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X