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?


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.