Un point doit-il être échappé dans une classe de caractères (crochets) d'une expression régulière?

95

Un point .dans une expression régulière correspond à n'importe quel caractère unique. Pour que l'expression régulière corresponde à un point, le point doit être échappé:\.

On m'a fait remarquer que, entre crochets, []un point ne doit pas être échappé. Par exemple, l'expression: [.]{3}correspondrait à une ...chaîne.

N'est-ce pas vraiment? Et si oui, est-ce vrai pour toutes les normes regex?

Dariusz
la source
Oui, c'est vrai que DOT (et la plupart des autres caractères spéciaux) n'ont pas besoin d'être échappés dans la classe de caractères.
anubhava
3
Il n'y a pas de «standard» pour la syntaxe des expressions régulières.
BoltClock
3
@BoltClock il y en a: posix, posix extended, perl. Voir en.wikipedia.org/wiki/Regular_expression#Standards
Dariusz
1
@Dariusz, êtes-vous celui qui m'a voté parce que vous pensiez que j'avais tort? si oui, je veux récupérer mes 2 points :)
Paul Samsotha
@peeskillet oui je l'étais, je suis corrigé. Thx et désolé.
Dariusz

Réponses:

134

Dans une classe de caractères (les crochets) tout caractère sauf ^, -, ]ou \est un littéral.

Ce site Web est une référence brillante et contient de nombreuses informations sur les nuances des différentes saveurs de regex. http://www.regular-expressions.info/refcharclass.html

lilactiger89
la source
3
Cela dépend vraiment de la façon dont la langue le gère, mais pour la plupart des langues, c'est vrai.
Patrick Oscity
40
-est également littéral si c'est la dernière valeur
CONvid19
16
Et ^ est littéral si ce n'est pas le premier caractère
Nigel B.Peck
1
Si $ ressemble à une variable, il doit également être échappé. Par exemple: [$.]
W3Coder
1
@PedroLobito Et si c'est le premier, je pense
Tim Malone