Aide regex
Rivax
-
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 !
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:
- Aide regex
- Regex buddy - Télécharger - Édition & Programmation
- Regex tout sauf - Forum Java
- Regex mot de passe ✓ - Forum Framework .NET
- Regex Ungreedy ? ✓ - Forum Programmation
- Regex : négation chaine ✓ - Forum Shell
5 réponses
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 ?
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 ?
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
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
/^\([- a-zA-Zéèëêäâàùüûîïÿöôoeç]+\)$/
Pour le "point", écrire \. la ou tu veux qu'il soit
Signature hors-charte - Supprimée par la modération
Pour le "point", écrire \. la ou tu veux qu'il soit
Signature hors-charte - Supprimée par la modération
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.
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 "
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
par
et utiliser match() pour faire la détection:
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question