web-dev-qa-db-fra.com

Différence entre les expressions rationnelles [A-z] et [a-zA-Z]

J'utilise une expression régulière pour programmer un validateur d'entrée pour une zone de texte dans laquelle je ne veux que des caractères alphabétiques. Je me demandais si [A-z] et [a-zA-Z] étaient équivalents ou s'il y avait des différences de performances.

Je continue à lire [a-zA-Z] dans mes recherches et aucune mention de [A-z].

J'utilise la String.matches(regex) de Java.

42
Eric

[A-z] correspondra à ASCII caractères dans la plage allant de A à z, alors que [a-zA-Z] correspondra à ASCII caractères dans la plage de A à Zet dans la plage de a à z. À première vue, cela peut sembler équivalent. Toutefois, si vous regardez ce tableau de ASCII caractères, vous verrez que A-z comprend plusieurs autres caractères. Plus précisément, ils sont [, \, ], ^, _ et ` (ce que vous ne voulez manifestement pas).

71
Donut

Les matchs a-z 'a' à 'z' A-Z correspondent aux noms 'A' à 'Z' A-z correspond à tous ceux-ci ainsi qu'aux personnages situés entre 'Z' et 'a' qui sont [] ^/_

Reportez-vous à http://www.asciitable.com/

11
Peter Lawrey

Examinez le tableau ASCII . Vous verrez qu'il y a des caractères entre Z et a, de sorte que vous ferez correspondre plus que prévu.

8
darioo

Lorsque vous consultez la table ASCII, vous verrez ce qui suit:

A = 65
Z = 90
a = 97
z = 122

Donc, [A-z] correspondra à chaque caractère de 65 à 122. Ceci inclut également ces caractères (91 -> 97):

 [\]^_`

Cela signifie que [A-Za-z] ne correspond qu'à l'alphabet, sans les caractères remarqués

7
Martijn Courteaux

Les crochets créent une classe de caractères et le trait d'union est un raccourci pour ajouter chaque caractère entre les deux caractères fournis. i.e. [A-F] peut être écrit [ABCDEF]

La classe de caractères [A-z] fera correspondre chaque caractère entre ces caractères, ce qui dans ASCII inclut d'autres caractères tels que '[', '\' et ']'.

Une alternative à la spécification des deux cas serait de définir l'expression régulière comme étant insensible à la casse, en utilisant le modificateur /i.

6
a'r

Regardez le tableau ASCII (sur lequel sont basés les caractères Java): il existe de nombreux caractères de ponctuation situés entre Z et a, à savoir: 

[\]^ _`
3
Michael Borgwardt

[a-zA-Z]

  e.g User Can Enter any small small-character from a to z  OR A to Z Any UPPERCase 
      Character

[AZ] Correspond au caractère dans une plage "A" à "z" (code de caractère 65 à 122)

Quel est le caractère

Un caractère est une lettre, un chiffre, un espace, un signe de ponctuation ou un symbole pouvant être saisi sur un ordinateur. Le mot "ordinateur", par exemple, est composé de huit caractères.

qu'est-ce que Digit

N'importe lequel des chiffres de 0 à 9 

Quelle est la lettre

Voici une lettre: A

Alphabat, c'est quoi

L'alphabet est une combinaison de lettresVoici un alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ

Je vous recommande fortement de faire défiler cette page si vous venez juste de commencer

https://en.wikipedia.org/wiki/Regular_expression

Pratique ici

https://regexr.com/

Si vous recherchez une expression rationnelle Java

https://docs.Oracle.com/javase/7/docs/api/Java/util/regex/Pattern.html

0
Haseeb Shinwari