Aide regex

Fermé
Rivax - 29 nov. 2009 à 17:53
 Rivax - 29 nov. 2009 à 21:54
Bonjour à tous,
J'ai une petit problème avec un regex.

J'utilise ce code : /^([- a-zA-Zéèëêäâàùüûîïÿöôœç]+)$/

Mais je voudrais qu'il autorise aussi les parenthèses, le . et le '
J'ai essayé différentes façons mais impossible de le faire marcher :(

Merci d'avance à ceux qui pourraient m'aider !

5 réponses

heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
129
29 nov. 2009 à 18:01
Bonjour,

Peux-tu décrire ce que tu cherches à obtenir avec cette RE, stp.

Je suppose que les / initial et final ne font pas partie de la RE.

Ton intention est-elle que le carret ^ ait sa signification d'exclusion ?
0
Bah je voudrais que toutes les lettres (avec accents aussi) soient autorisées, ainsi que les parenthèses, le . le ' et la virgule.
En fait j'utilise une fonction qui me permet d'exec mes différents regex.
Bout de code :

function choixRegex($typeControle)
{
switch ($typeControle)
{
case "lettresAccents":
$regex = "/^([- a-zA-Zéèëêäâàùüûîïÿöôœç]+)$/";
break;
case "username":
.......

Après je fais un preg_match de choixRegex pour effectuer mes différents controles.
Ex:

if(!preg_match(choixRegex('lettresAccents'),$value))
{....}

Voilà, j'espère avoir été plus clair :s
0
stephane_mc2004
Messages postés
755
Date d'inscription
samedi 12 juillet 2008
Statut
Membre
Dernière intervention
8 février 2011
95
Modifié par moska le 4/04/2011 à 00:08
/^\([- a-zA-Zéèëêäâàùüûîïÿöôoeç]+\)$/

Pour le "point", écrire \. la ou tu veux qu'il soit
Signature hors-charte - Supprimée par la modération
0
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
129
29 nov. 2009 à 18:31
Ma 3ième question était idiote. Compris: ^ et $ sont les caractères spéciaux de début et fin de chaîne.



Je ne vois pas où est ton problème.
«Special characters are not active inside sets.»

http://www.python.org/doc/2.5.4/lib/re-syntax.html
Donc il sufit de rajouter ) et ( et . et , dans la RE, c'est tout....

Il n'y a que le ' auquel faire attention, non pas parce que c'est un caractère spécial dans les REs, mais parce qu'il ferme une chaîne si on l'a ouverte par '.

Il suffit alors de délimiter la RE par "
pat = re.compile("^[- a-zA-Zéèëêäâàùüûîïÿöôœç().']+$")





Les deux parenthèses après le ^ et avant le $ définissent un groupe, mais je ne vois pas à quoi ça sert de définir un groupe, étant donné que ce groupe capture l'ensemble de la chaîne et que pour obtenir la chaîne entre ^ et $, il suffit de pat.search(ch).group()

Ce qui fait qu'il n'y a pas besoin d'un groupe et d'un pat.search(ch).group(1) , sauf si cette RE doit fonctionner en mode MULTILINE.




D'autre part, en dehors d'un mode MULTILINE, on peut remplacer
"^[- a-zA-Zéèëêäâàùüûîïÿöôœç().']+$"

par
"[- a-zA-Zéèëêäâàùüûîïÿöôœç().']+"

et utiliser match() pour faire la détection:
pat.match(ch).group()

Le caractère glouton de + fait que la recherche de matching va aller jusqu'à la fin de la chaîne et s'arrêter à la fin de ligne, SI ON N"EST PAS EN MODE MULTILINE. Donc pas besoin du $ non plus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci heyquem ca marche !!

Beaucoup de temps perdu pour pas grand chose dmg :(
0