2011-07-26 14 views
5

Sto tentando di analizzare correttamente una richiesta multipart/form-data, funziona a meno che il file che sta per essere caricato contenga doppi apici.Regex per nome file con citazioni in più parti

La richiesta sembra (estratto da wireshark):..

Content-Disposition: form-data; name="file"; filename="b'e\"e.JPG" 

modo che il file è in realtà chiamato b'e "e.jpg sul mio file system locale Il browser sfugge le virgolette correttamente

voglio afferrare il nome del file b'e\"e.JPG fuori di questa stringa

ho trovato una regex per afferrare stringhe tra virgolette con le virgolette escape all'interno:.

/"[^"\\]*(\\.[^"\\]*)*"/i 

(fonte http://www.regular-expressions.info/regexbuddy/stringescapedmulti.html)

L'espressione regolare funziona perfettamente quando applicato sulla corda "b'e\"e.JPG" ma quando provo a scopo solo sul parte, come:

/filename="[^"\\]*(\\.[^"\\]*)*"/i 

Non voglio ottenere qualsiasi risultati.

Qualsiasi aiuto sarebbe molto apprezzato

Edit:

sto lavorando con JavaScript, così ho messo la regex al violino js: http://jsfiddle.net/hDBcs/

Grazie!

Simon

+0

Solo un rapido test con RegexBuddy funziona bene per me, c'è un'altra parte del Regex quello potrebbe rovinarlo? – CodingGorilla

+0

Ciao, grazie per il test :) ma in javascript purtroppo non funziona. Ho aggiunto un test rapido su jsFiddle (vedi modifica). – sled

risposta

4

Forse il problema è che non si utilizza parentesi al fine di ottenere le parti necessarie:

/filename="([^"\\]*(?:\\.[^"\\]*)*)"/i 
+0

grazie mille! – sled