Forum Programmation.web Capturer le texte entre deux balises

Posté par  .
Étiquettes : aucune
0
25
avr.
2005
Salut à tous !

Bon, voici une question qui devrait être normalement simple à tous ceux qui masterisent un peu ou beaucoup les expressions rationnelles... Je cherche juste à capturer le texte se trouvant entre deux balises.

Par exemple :
bla blah blah blah blah blah (hello)coucou(fin hello) reblah reblah
je dois obtenir "coucou".

J'ai essayé : `\(hello\)([^(\(fin hello\))]*)\(fin hello\)`
mais ça a pas l'air de marcher...

Merci pour vos réponses.
  • # '/\(hello\)(.*)\(fin hello\)/'

    Posté par  . Évalué à 1.

    essaie ca '/\(hello\)(.*)\(fin hello\)/'
    • [^] # Re: '/\(hello\)(.*)\(fin hello\)/'

      Posté par  . Évalué à 1.

      ah oui, j'ai l'impression que ça marche, c'était encore plus simple :).

      merci.
    • [^] # Re: '/\(hello\)(.*)\(fin hello\)/'

      Posté par  . Évalué à 2.

      .* est pas censé etre glouton ???
      sur (hello)coucou(fin hello) (hello)coucou(fin hello) je suis pas sur que ca marcheras....
      • [^] # Re: '/\(hello\)(.*)\(fin hello\)/'

        Posté par  (site web personnel) . Évalué à 3.

        oui, * cherche le plus grande chaine qui matche.
        Dans vim, tu peux faire du \{-} à la place de * pour matcher le plus petit, mais ce ne doit pas etre standard.

        le coup du [^machin] ca veut dire un caractere qui n'appartient pas a l'ensemble m, a, c, h, i, n. Donc ça ne pouvait pas marcher avec coucou. Cela dit, tu peux peut etre te contenter de texte sans balise imbriquées, et donc mettre un \([^(]*\).
        Toujours dans vim, pour matcher ce qui ne contient pas une chaine, il faut utiliser \@!.
      • [^] # Re: '/\(hello\)(.*)\(fin hello\)/'

        Posté par  . Évalué à 2.

        Pour éviter que ce soit glouton, il faut utiliser le « ? » en plus de « * » il me semble : '/\(hello\)(.*?)\(fin hello\)/'

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.