Comment puis-je écrire une regex qui ne correspond qu'aux lettres?
C'est une solution très centrée sur l'ASCII. Cela ne fonctionnera pas avec à peu près n'importe quel texte non-anglais.
Comment puis-je écrire une regex qui ne correspond qu'aux lettres?
Utilisez un ensemble de caractères: [a-zA-Z]
correspond à une lettre de A à Z en minuscule et en majuscule. [a-zA-Z]+
correspond à une ou plusieurs lettres et ^[a-zA-Z]+$
correspond uniquement aux chaînes qui se composent d'une ou plusieurs lettres seulement (^
et $
marquent respectivement le début et la fin d'une chaîne).
Si vous voulez correspondre à d'autres lettres que A à Z, vous pouvez soit les ajouter à l'ensemble de caractères: [a-zA-ZäöüßÄÖÜ]
. Ou vous pouvez utiliser des classes de caractères prédéfinies comme la classe de propriété de caractères Unicode \p{L} qui décrit les caractères Unicode qui sont des lettres.
C'est une solution très centrée sur l'ASCII. Cela ne fonctionnera pas avec à peu près n'importe quel texte non-anglais.
@Joachim Sauer: Cela risquerait plutôt de ne pas fonctionner sur les langues utilisant des caractères non latins.
Déjà en panne sur 90% des textes en allemand, sans même mentionner le français ou l'espagnol. L'italien pourrait encore s'en sortir assez bien cependant.
Pas dans toutes les saveurs regex. Par exemple, les regex de vim traitent \p
comme "caractère imprimable".
Cette page suggère seulement que les regexes de java, .net, perl, jgsoft, XML et XPath supportent \p{L}. Mais les grandes omissions sont : python et ruby (bien que python ait le module regex).
@Philip Potter : Ruby prend en charge les propriétés de caractères Unicode en utilisant la même syntaxe exacte.
Je voulais des lettres. Cependant, cela ne semble pas fonctionner. preg_match('/[a-zA-Z]+/', $name);
[A-Za-z] est juste la déclaration des caractères que vous pouvez utiliser. Vous devez toujours déclarer combien de fois cette déclaration doit être utilisée : [A-Za-z]{1,2} (pour correspondre à 1 ou 2 lettres) ou [A-Za-z]{1,*} (pour correspondre à 1 lettre ou plus)
Well à, á, ã, Ö, Ä... sont aussi des lettres, de même que , , , , , , , , , , , , , , ... fr.wikipedia.org/wiki/Lettre_(alphabet)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
72 votes
Quelle est votre définition des
caractères
? ASCII? Kanji? Iso-XXXX-X? UTF8?60 votes
Quelle est votre définition du
regex
? Perl? Emacs? Grep?6 votes
J'ai remarqué que \p{L} pour une lettre et le drapeau /u pour Unicode correspondent à n'importe quelle lettre dans mon regex, c'est-à-dire
/\p{L}+/u