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 № 1Ci 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.