Um ponto deve ser escapado em uma classe de caractere (colchetes) de uma expressão regular?

95

Um ponto .em uma expressão regular corresponde a qualquer caractere único. Para que o regex corresponda a um ponto, o ponto deve ser escapado:\.

Foi-me dito que dentro dos colchetes []não é necessário escapar um ponto. Por exemplo, a expressão: [.]{3}corresponderia a ...string.

Não é mesmo? E em caso afirmativo, isso é verdade para todos os padrões regex?

Dariusz
fonte
Sim, é verdade que DOT (e a maioria dos outros caracteres especiais) não precisa ter escape na classe de caractere.
anubhava
3
Não existe um "padrão" para a sintaxe da expressão regular.
BoltClock
3
@BoltClock existem alguns: posix, posix extended, perl. Consulte en.wikipedia.org/wiki/Regular_expression#Standards
Dariusz
1
@Dariusz foi você quem me rejeitou porque achou que eu estava errado? em caso afirmativo, quero meus 2 pontos de volta :)
Paul Samsotha
@peeskillet sim, eu estava corrigido. Obrigado e desculpe.
Dariusz

Respostas:

134

Em uma classe de caracteres (entre colchetes) qualquer caractere, exceto ^, -, ]ou \é um literal.

Este site é uma referência brilhante e contém muitas informações sobre as nuances dos diferentes sabores do regex. http://www.regular-expressions.info/refcharclass.html

lilactiger89
fonte
3
Realmente depende de como a linguagem lida com isso, mas para a maioria das linguagens isso é verdade.
Patrick Oscity
40
-também é literal se for o último valor
CONvid19 de
16
E ^ é literal se não for o primeiro caractere
Nigel B. Peck
1
Se $ se parece com uma variável, também precisa ter escape. Por exemplo: [$.]
W3Coder
1
@PedroLobito E se for o primeiro, eu acho
Tim Malone