2013-04-23 10 views
7

Sto provando a scrivere un'espressione regolare che corrisponde a \ o /.Scrittura: [ /] ( o/regex) correttamente?

Non importa in che ordine lo scrivo:

[//\] 

o

[/\\] 

E 'in qualche modo fuggendo sia la mia parentesi quadra o la mia barra. Qual è il modo corretto di mostrare questo caso particolare?

+0

Ora che ho notato, intendevo scrivere '[\\ /]' o '[/ \\]' ma sono sicuro che la maggior parte delle persone ce l'ha. Non modificherò la mia risposta poiché la risposta sotto fa riferimento al mio errore e non voglio confondere gli utenti. Spero che questo risolva ogni dubbio sulla mia logica, se qualcuno lo avesse. –

risposta

10

Sì, stai sfuggendo alla parentesi di chiusura nella seconda espressione regolare e il primo non verrà nemmeno compilato come una stringa. Si vuole

"[/\\\\]" 

Entrambi tuo regex nella questione sono corrette pianura regex. Tuttavia, poiché la regex è specificata all'interno di una stringa letterale Java, per specificare un \, è necessario sfuggire a esso \\. Pertanto, finiamo con "[/\\\\]" o "[\\\\/]".

In sintesi, per specificare correttamente \ nell'espressione regolare, è necessario sfuggire a esso \\. E per specificare correttamente \\ in letterale stringa Java, dobbiamo aggiungere un altro livello di escape \\\\.

+3

'un letterale \ in un'espressione regolare dobbiamo scrivere \\\\.' No. '' \\ '' è sufficiente. Il motivo è che abbiamo bisogno di un altro livello di escape con la stringa letterale di Java. – nhahtdh

+0

Hai ragione, lasciami provare a esprimere meglio. – arshajii

+0

Grazie! Questo era proprio quello di cui avevo bisogno. : D –