Se connecter / S'enregistrer
Votre question

Sous ensemble regexp

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
3 Février 2008 19:14:03

Bonjour,

Je souhaite réalisé une regexp pour le besoin d'un script. Cette regexp doit marché qu'il y est ou non un sous ensemble dans ma variable.
Je m'explique par un exemple:

<div class=g><link rel=ok ><h2>ok</h2></div>

Je voudrais que ma regexp capture la classe de la div et la valeur entre le h2 sachant que le link peut etre present ou non dans la ligne.

Je pensais faire comme ceci:

<div class=([^>]*)>(<link[^>]*> )?<h2[^>]*>([^<]*)</h2>

Car je sais que pour dire "si la lettre et la 0 ou 1 fois" il faut utilisé "?" mais visiblement, ma regexp ne marche pas.

Si quelqu'un peut m'aider.

Merci.

Autres pages sur : ensemble regexp

a c 232 L Programmation
3 Février 2008 22:57:25

Salut,

Tu fais ça avec quel langage ? Tu peux pas utiliser du Dom par exemple, qui serait certainement plus pratique (enfin, suivant comment est faite la page...)
3 Février 2008 23:00:57

Je fait sa en c++ et je n'est pas de parseur dom a dispo pour sa ^^. En plus je suis sur que c'est un truc tout bete pour faire sa mais j'ai pas encore trouvé comment faire.
Contenus similaires
Pas de réponse à votre question ? Demandez !
a c 232 L Programmation
3 Février 2008 23:02:22

Je ne suis pas un pro en regexp, mais y'a rien qui me choque dans la tienne.
Le problème ne vient-il pas de sauts de lignes ou conneries dans ce genre ? je suppose que toute la div n'est pas sur la même ligne, si ?
3 Février 2008 23:07:04

si si, c un code generer directement par du php dc sans retour a la ligne, c'est bizarre que sa marche pas.
a c 232 L Programmation
3 Février 2008 23:17:18

je sais pas si c'est normal mais il y a un espace dans ta regexp : (<link[^>]*>_)? (je t'ai mis un _ à la place de l'espace pour bien le voir)
3 Février 2008 23:27:15

Tu m'as fait peur la =D, mais j'ai regarder mon code source, et c'est juste une erreur dans le copier coller, il n'y as pas d'espace dans la regexp et donc sa ne marche toujours pas :/  . Merci quand meme, sa aurai put venir de la ^^.
a c 232 L Programmation
3 Février 2008 23:29:29

tu pourrais mettre un exemple concret de code que tu dois parser, et ta regexp exacte ? :) 
3 Février 2008 23:46:56

ma regexp:

<div class=([^>]*)>(<!--[a-z]-->)(<link[^>]*>)?<h2[^>]*>(<a[^>]*>)

le code est une page html générer, je peux pas te la donnée comme sa, c'est un peu lourd ^^
a c 232 L Programmation
4 Février 2008 09:31:07

En fait, pour les espaces, je viens de me souvenir que c'est le site qui ajoute des espaces devant les parenthèses fermantes de temps en temps.

Es-tu sûr de ton (<!--[a-z]-->) c'est un commentaire avec une seule lettre dedans ?
4 Février 2008 11:01:24

ouai exactement et je sais qu'il est présent a chaque fois dans le code.
Sa m'embete cette erreur car je pourrais faire 2 regexp différentes mais c'est pas optimisé du tout lol.
a c 232 L Programmation
4 Février 2008 13:28:44

Et si tu essaies de faire au fur et à mesure, c'est-à-dire, de ne faire que <div class=([^>]*)>(<!--[a-z]--> ), puis tu ajoutes les autres expressions au fur et à mesure pour voir ce qui bloque ?
4 Février 2008 16:54:09

Je viens d'essayé ce que tu as proposé. C'est bien le (<link...) qui pose problème, si je l'enlève j'obtiens bien les lignes sans link et si je le rajoute les lignes avec :( 
a c 232 L Programmation
4 Février 2008 17:53:22

C'est la regexp en elle même qui fonctionne pas ? Car, tu auras un élément de plus retourné vu que tu as des parenthèses, donc faut le prendre en compte aussi. Et le problème, c'est que sans un vrai exemple (tu fais un truc minime même ou tu peux enlever le superflu, mais là comme ça, pour moi y'a aucune raison que ça ne fonctionne pas.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS