регулярное выражение для извлечения имени файла - PullRequest
4 голосов
/ 11 ноября 2011

У меня есть простой текстовый веб-ответ, и мне нужно извлечь имя файла.Любые предложения для хорошего RegEx?

Total parts : 1
Name : file
Content Type : text/plain
Size : 1167
content-type : text/plain
content-disposition : form-data; name="file"; filename="test_example.txt"

1 Ответ

14 голосов
/ 11 ноября 2011

Вы можете использовать это регулярное выражение, чтобы получить имя файла

(?<=filename=").*?(?=")

Код будет выглядеть так

String fileName = null;
Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")");
Matcher regexMatcher = regex.matcher(requestHeaderString);
if (regexMatcher.find()) {
    fileName = regexMatcher.group();
}

Объяснение регулярного выражения

(?<=             # Assert that the regex below can be matched, with the match ending at this position (positive lookbehind)
   filename="       # Match the characters “filename="” literally
)
.                # Match any single character that is not a line break character
   *?               # Between zero and unlimited times, as few times as possible, expanding as needed (lazy)
(?=              # Assert that the regex below can be matched, starting at this position (positive lookahead)
   "                # Match the character “"” literally
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...