Sous groupe dans une regex

Sous groupe dans une regex - Java - Programmation

Marsh Posté le 01-05-2008 à 13:43:48    

Bonjour à tous !  :hello:

 

alors voilà mon problème :
j'ai la regex suivante :

Code :
  1. (.{1,5})((;TYPE=(.{3,4})){0,2}):(.*)


elle match ces deux chaines :

  • Citation :

    TEL;TYPE=CELL:0606070807

  • Citation :

    ADR;TYPE=home;TYPE=pref:;;;;;


Pour la 1ere la regex retourne :

  • group(1) = "TEL"
  • group(2) = ";TYPE=CELL"
  • group(3) = ";TYPE=CELL"
  • group(4) = "CELL"
  • group(5) = "0606070807"

c'est parfait. par contre, pour la 2ème, la regex retourne :

  • group(1) = "ADR"
  • group(2) = ";TYPE=home;TYPE=pref"
  • group(3) = ";TYPE=pref"
  • group(4) = "pref"
  • group(5) = ";;;;;"


alors que moi je voudrais avoir, pour la 2ème :

  • group(1) = "ADR"
  • group(2) = ";TYPE=home;TYPE=pref"
  • group(3) = ";TYPE=pref"
  • group(4) = "home"
  • group(5) = "pref"
  • group(6) = ";;;;;"


donc je voudrait savoir si c'est possible et si oui, comment ? j'ai chercher du coté des "avides", "rétiçants" et "possesifs" mais ça marche pas.

 

merci d'avance  :)


Message édité par nicodu95 le 01-05-2008 à 13:49:15
Reply

Marsh Posté le 01-05-2008 à 13:43:48   

Reply

Marsh Posté le 05-05-2008 à 13:37:46    

Tu n'y arriveras pas de cette façon je pense, un groupe donné ne conserve que la dernière occurrence trouvée. Je te conseilles de procéder différemment, en appelant find() à répétition sur ton matcher pour trouver tous les TYPE=xyz de ta chaine.

Reply

Marsh Posté le 06-05-2008 à 17:15:25    

j'ai cahnger de regex :

Code :
  1. (.{1,5})(;TYPE=(.{3,4})|;TYPE=(.{3,4});TYPE=pref){0,1}:(.*)


j'arrivve à faire ce que je veux avec  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed