|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre régulier
![]() Inscription : mai 2007 Messages : 180 ![]() |
Haa vraiment les regex.. un truc d'informaticien pour les informaticiens
![]() Ce n'est pas mon premier regex, mais la je comprend pas : je veux trouver le motif d'un entier OU les 3 lettres "abx" donc : Code :
Array ( [0] => Array ( [0] => 44 [1] => 0 ) ) c bon. si $subject= "abx" Array ( [0] => Array ( [0] => [1] => 0 ) ) c pas bon.. Me demandez pas pourquoi j'ai essayé ça (généralement on essaye beaucoup de chose avec les regex), mais dans l'expression j'interverti les 2 motifs (je place le motif abx en premier), mais je ne les modifient pas, ils sont identique aux précédents : Code :
Array ( [0] => Array ( [0] => 44 [1] => 0 ) ) c bon. si $subject= "abx" Array ( [0] => Array ( [0] => abx [1] => 0 ) ) c bon. Vous allez me dire "Ben donc ça marche, c'est quoi ton probleme ?". J'aime bien comprendre ce que je code.. et je comprend pas pourquoi ça marche dans un cas et pas dans l'autre, alors que les motifs exprimés dans les deux cas sont exactement les mêmes. |
||||
|
|
00
|
|
|
#2 | |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Citation:
![]() Le motif (?i:[0-9]*)|(?i:abx) dit qu'il y aura correspondance s'il trouve 0 ou plus chiffres donc forcément il y aura toujours une correspondance sur votre chaîne avec seulement cette partie du motif. Quand vous avez inversé les deux parties de l'alternative, l'expression n'est plus évaluée de la même façon : il cherche d'abord "abx" avant 0 ou N chiffres ce qui résout (tout du moins en partie) votre problème. Pour le tout premier motif et en accord avec votre description, il aurait fallu indiquer au moins un chiffre [0-9]+ ou abx : [0-9]+|(?i:abx) (qu'on peut éventuellement améliorer sur la reconnaissance d'un nombre entier). |
|
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : mai 2007 Messages : 180 ![]() |
Je ne savait pas qu'il y avait un ordre dans les OU.
En bon informaticien, j'ai une lecture très booléenne des regex : x OU y est équivalent à y OU x. Va donc falloir que je me flagelle pour oublier ça pour les regex. Ca va pas me réconcilier avec les regex tout ça... Bonne soirée et merci pour ta réponse rapide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com