/ / Por que eu preciso de duas barras no Java Regex para encontrar um símbolo "+"? - java, regex, escapando

Por que preciso de duas barras no Java Regex para encontrar um símbolo "+"? - java, regex, escapando

Apenas algo que eu não entendo o completosignificado para trás. Eu entendo que eu preciso escapar de qualquer caractere de significado especial se eu quiser encontrá-los usando o regex. E eu também li em algum lugar que você precisa escapar da barra invertida em Java se ela está dentro de um literal String. Minha pergunta é se eu "escapar" da barra invertida, ela não perde o significado? Então, não seria capaz de escapar do seguinte símbolo mais?

Lança um erro (mas não deveria funcionar, já que é assim que você escapa desses caracteres especiais?):

replaceAll("+s", ""));

Trabalho:

replaceAll("\+\s", ""));

Espero que isso faça sentido. Eu estou apenas tentando entender a funcionalidade por trás de porque eu preciso dessas barras extras quando os tutoriais de regex que eu li não os mencionam. E coisas como "+" deve encontrar o símbolo de mais.

Respostas:

15 para resposta № 1

Existem dois "escapamentos" acontecendo aqui. A primeira barra invertida é para escapar da segunda barra invertida para a linguagem Java, para criar um caractere real de barra invertida. O caractere de barra invertida é o que escapa do + ou o s para interpretação pelo motor de expressão regular. É por isso que você precisa de duas barras invertidas - uma para Java, uma para o mecanismo de expressões regulares. Com apenas uma barra invertida, os relatórios Java s e + como caracteres de escape ilegais - não para expressões regulares, mas para um caractere real na linguagem Java.


0 para resposta № 2

Funda atrás de barras extras é que, primeiro barra "" é escape para a string e segunda barra "" é escape para o regex.