Expressões Regulares no Java?

Estou fazendo alguns testes sobre expressões regulares no java somente para fins didáticos.

E pelo pouco que sei sobre expressões regulares, você poderia casar o caractere “(”, utilizando a expressão \(, porém, isso não está acontecendo no java. Para eu conseguir casar o caractere “(” estou tendo que utilizar “[(]”. O caractere “” não funciona como escape de caractere?

Notei também que no Java se utiliza “\\d” para casar dígitos, como também poderia ser utilizado “[0-9]”. Existe algum motivo para isso?

Outra situação, é que um espaço realmente casa com espaço, mas também existe o “\\s”. É somente para fins de legibilidade?

Na verdade, funciona sim.
A questão é que você precisa entender como o java implementa e traduz isso:

"\";//Resulta em erro, afinal, este caractere simboliza, ao interpretador do java, que o próximo caractere será escapado, como em "\n", "\t", etc.
"\\";//Resulta em uma String com o caractere '\', uma vez que o interpretador do java entende que você não quer escapar o próximo caractere. Como em: "C:\\temp\\arquivos\\etc";

No teu caso, você vai precisar burlar isso, fazendo algo como
"\\\{"

1 curtida

Hahaha… Que tenso.

Muito obrigado Luiz. Tirou minhas dúvidas.

@edit

Continua dando erro utilizando

“\\\(”

Ah, sim, eu acabei sendo imprudente.
Onde coloquei

"\\\{"

Por favor, leia

"\\\\{"

1 curtida

Nossa, legibilidade fica complicada assim ein… rs

Vou utilizar o:
"[{]"
Acho que fica mais simples de entender ao lerem o código.

Muito obrigado.

Pequenos problemas derivados da abordagem da linguagem.
Eu não manjo lhufas de regex, mas já tive vários problemas com isso.

1 - pode usar “\\(” que vai funcionar.
2 - se você usar " " vai casar apenas com espaço em branco simples, se você usar “\s” vai casar além do espaço em branco, finais de linha e tabulações

Mendes, quando utilizo \( não funciona.

Foi mal, rsrs é “\\(”

Estude Linguagens Formais e Compiladores, vai te ajudar bastante