/ / Perché ho bisogno di due barre in Java Regex per trovare un simbolo “+”? - java, regex, in fuga

Perché ho bisogno di due barre in Java Regex per trovare un simbolo "+"? - java, regex, fuga

Solo qualcosa che non capisco per interosignificato dietro. Capisco che ho bisogno di sfuggire a tutti i caratteri di significato speciale se voglio trovarli usando regex. E ho anche letto da qualche parte che è necessario sfuggire alla barra rovesciata in Java se si trova all'interno di un valore letterale String. La mia domanda però è se "sfuggo" alla barra rovesciata, non perde il suo significato? Quindi non sarebbe in grado di sfuggire al seguente simbolo più?

Genera un errore (ma non dovrebbe funzionare poiché è così che sfuggite a quei caratteri speciali?):

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

Lavori:

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

Spero che abbia senso. Sto solo cercando di capire la funzionalità dietro perché ho bisogno di quelle barre extra quando i tutorial di regex che ho letto non li menzionano. E cose come "+" dovrebbe trovare il simbolo più.

risposte:

15 per risposta № 1

Ci sono due "fughe" in corso qui. La prima barra rovesciata è quella di sfuggire alla seconda barra rovesciata per il linguaggio Java, per creare un vero carattere barra rovesciata. Il carattere barra rovesciata è ciò che sfugge a + o il s per l'interpretazione da parte del motore delle espressioni regolari. Ecco perché hai bisogno di due barre rovesciate: una per Java, una per il motore delle espressioni regolari. Con una sola barra rovesciata, Java riporta s e + come caratteri di escape illegali - non per le espressioni regolari, ma per un personaggio reale nel linguaggio Java.


0 per risposta № 2

Funda dietro le barre extra è che, la prima barra "" è fuga per la stringa e la seconda barra "" è fuga per la regex.