MaX_62
Messages postés879Date d'inscriptionvendredi 22 octobre 2004StatutMembreDernière intervention29 juin 2007
-
25 janv. 2005 à 20:37
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 2009
-
29 janv. 2005 à 00:25
Je voudrais faire un truc assez simple avec des $regex : vérifier si le premier caractère de $1- est bien # ; et ensuite vérifier si # est présent seulement une fois dans $1- . Or, j'ai lu un tuto qui dit ça :
ça d'accord, mais $regex(leet,e?) retourne 1 alors que "e" est présent 2 fois. Donc meme probleme pour mon nom de chan : $regex($1-,^#?) ne fonctionne pas : retourne toujours 1 meme quand # est présent 2 fois :|
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 25 janv. 2005 à 22:13
non Fearless, soit c des classes auquelles cas ton
"|" nest pas un ou (et dans ce cas je pige pas) soit c'est un ou et
faut des parenthèses.
pour ta question voila :
vérifier si le premier caractère de $1- est bien # ; et ensuite vérifier si # est présent seulement une fois dans $1-
en gros ca veut dire que # est présent qu'en première position de $1- non ? si oui fais ca :
$regex($1-,^#[^#]+$)
décomposition : ^ début, # dièse, [^#] autre chose qu'un dièse, "+"
pour dire que le autre chose qu'un dièse est répété une fois ou
plusieurs autant qu'on veut, et "$" pour "fin de chaine"
au cas ou j'ai mal compris (-> un dièse en début puis un dièse dans la chaine pas plus (donc zero ou un))
$regex($1-,^#[^#]+#?[^#]+$) (qui fonctionne de la même facon), le "?" sert a dire "zero ou un"
enfin pour le tuto :
$regex(leet,e?) retourne 1 alors que "e" est présent 2 fois.
ca marche car tu demandes "y a il un ou zero "e"
dans leet : la réponse est oui ! par défaut, il faut bien comprendre
que les regex ca vérifie si un truc "est dans" la chaine recherchée...
tidds
Messages postés246Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention 9 janvier 2006 25 janv. 2005 à 22:14
$regex($1-,^#[^#]*$)
Explications :
^ ... $ annonce le début et la fin de la chaîne
# signale qu'il faut un # au début de la chaîne
[^#] représente n'importe quel caractère différent de #, ça peut être "a", "b", "c", etc mais pas "#"
* étend cette restriction à tous les caractères qui suivent (s'il en existe)
_____________________________________
Tidds alias moo alias Oni_Baka Voilà, plus d'ambiguité possible. :]
World is moo
_____________________________________
Hades53
Messages postés231Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention 7 juillet 2009 29 janv. 2005 à 00:23
Je ne vois pas vraiment l'utilité d'utiliser une regex pour un traitement aussi facile.
Ca peut être fait de diverses façons:
$iif($left($1-,1) != $chr(35) || $chr(35) isin $mid($1-,2),0,1)
ou encore
$iif($left($1-,1) != $chr(35) || $count($1-,$chr(35)) != 1,0,1)
Pourquoi faire compliqué quand on peut faire simple...<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 29 janv. 2005 à 00:25
Pour répondre à la question, ou aussi parce qu'avec
l'habitude un masque unique de regex est plus facile a relire que deux
conditions avec 3-4 arguments dont il faut re-chercher la signification
a posteriori...
Mais c'est vrai que niveau efficacité, c'est pas forcément mieux :p