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 130
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 96
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 130
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