-
Groupes et numérotation
Bonjour,
J'ai un souci concernant l'ordre des éléments dans un groupe.
Soit la chaine "28.09.2009 - 11h25"
Si je la traite avec la regex
([0-9]+)\.([0-9]+)\.([0-9]+)\s*-\s*([0-9]+)h([0-9]+)
Je récupère bien
28-09-2009-11-25
Mais je souhaite prévoir une situation où les éléments de départ sont
dans un ordre incorrect. Le cas échéant, je souhaite numéroter les données avec une regex du type :
([0-9]+)\2\.([0-9]+)\1\.([0-9]+)\s*-\s*([0-9]+)h([0-9]+)
Cette ligne permettrait de corriger une inversion du type
09-28-2009-11-25.
Le problème donc est que ma regex ne restitu aucun résultat lorsque je
tente de lui préciser un ordre des données.
Je précise que cette regex est exploitée dans un prog Java (si ça change qqc).
Des idées ?
Merci.
-
Salut, je pense que la solution est limité de toute façon, comment savoir si la véritable date est 02-04-2009 ou 04-02-2009 par ton regex..?
-
Ah oui, je n'ai pas précisé mais je souhaite définir la numérotation en amont car je connais les particularités des différentes chaines.
Je définirais une fois pour toutes que les chaines issues :
- des fichiers A ont un format de type ()/1()/2()/3
- des fichiers B ont un format de type ()/2()/3()/1
etc.
Le problème n'est pas de définir la numérotation mais de faire qu'elle
soit interprétée. Pour l'instant la regex ne donne rien donc je me pose la question de savoir si ma syntaxe est bonne.
-
Pas bien capté. Tu veux que tes captures soient ordonnées dans le tableau des captures d'un preg_match ?
Au lieu de réordonner, ne serait il pas plus simple de nommer tes masques ?
((?P>dd)[0-9]+)\.((?P>mm)[0-9]+)\.((?P>YYYY)[0-9]+)\s*-\s*((?P>HH)[0-9]+)h((?P>ii)[0-9]+)
Syntaxe à vérifier.
-
Oooooh, ça m'a l'air intéressant ça.
Je google le "nommage des masques" et reprends contact...
-
flute zut, j'avais un peu oublié la syntaxe de nommage :roll:
(?P<jour>[0-9]+)... etc
-
Aie, je suis embété car preg_match c'est du PHP et moi je suis en Java.
Je vais essayer de reloger ma question dans le bon forum...