Aide regex

Rivax -  
 Rivax -
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 !
A voir également:

5 réponses

heyquem Messages postés 808 Statut Membre 131
 
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
Rivax
 
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 807 Statut Membre 96
 
/^\([- 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 808 Statut Membre 131
 
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
Rivax
 
Merci heyquem ca marche !!

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