Регулярное выражение для имени файла с кавычками в составных частях

Я пытаюсь правильно проанализировать запрос multipart/form-data, он работает, если загружаемый файл не содержит двойных кавычек.

Запрос выглядит так (выдержка из wirehark):

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

Таким образом, файл на самом деле называется b'e"e.jpg в моей локальной файловой системе. Браузер правильно экранирует кавычки.

Я хочу получить имя файла b'e\"e.JPG из этой строки.

Я нашел регулярное выражение для захвата строк в кавычках с экранированными кавычками внутри:

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

(источник http://www.regular-expressions.info/regexbuddy/stringescapedmulti.html)

Регулярное выражение отлично работает при применении к строке "b'e\"e.JPG", но когда я пытаюсь охватить его только частью filename=, например:

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

Я не получу никаких результатов.

Любая помощь могла бы быть полезна

Изменить:

Я работаю с JavaScript, поэтому поместил регулярное выражение на скрипт js: http://jsfiddle.net/hDBcs/

Спасибо!

Саймон


person sled    schedule 26.07.2011    source источник
comment
Просто быстрый тест с RegexBuddy отлично работает для меня, есть ли другая часть Regex, которая может его испортить?   -  person CodingGorilla    schedule 26.07.2011
comment
Привет, спасибо за тестирование :) но, к сожалению, в javascript это не работает. Я добавил быстрый тест на jsFiddle (см. редактирование).   -  person sled    schedule 26.07.2011


Ответы (1)


Возможно, проблема в том, что вы не используете скобки для получения необходимых деталей:

/filename="([^"\\]*(?:\\.[^"\\]*)*)"/i
person Karolis    schedule 26.07.2011