Regex matcher работает на JUnit, но не работает в контейнере сервлетов - PullRequest
0 голосов
/ 25 ноября 2018

Это моя тестовая строка

-----------------------------12303134546862
Content-Disposition: form-data; name="file"; filename="notepad.html"
Content-Type: text/html

И у меня есть код Java Regex для получения "границы" части, которая представляет собой -----------------------------12303134546862

String BOUNDARY_PATTERN = "(\\A-+(.)+\\n)";
String byteString = new String(bytes, "UTF-8");
Pattern pattern = Pattern.compile(BOUNDARY_PATTERN);
Matcher matcher = pattern.matcher(byteString);
while (matcher.find()) {
    String boundary = matcher.group(1);
    contentType = "multipart/form-data; boundary=" + boundary;
}

При запуске с использованиемВ тесте JUnit сопоставление соответствует группе 1, но при запуске внутри сервера / сервлета Tomcat boundary равно нулю, поэтому сопоставление не работает.

В чем может быть проблема, которая может быть причиной этого?

1 Ответ

0 голосов
/ 25 ноября 2018

Возможно, проблема в том, что вы находитесь не в самом начале ввода, что соответствует \A.

Попробуйте использовать многострочный флаг и нормальный начальный якорь:

"(?m)^-+\\d+$"

При включенном многострочном флаге ^ и $ соответствуют началу и концу каждой строки , а не началу и концу всего ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...