这是我的测试字符串
-----------------------------12303134546862
Content-Disposition: form-data; name="file"; filename="notepad.html"
Content-Type: text/html
我有一个Java正则表达式代码来获取“边界”部分,即----------------------------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 服务器/servlet 内运行时,boundary
为空,因此匹配器不起作用。
可能是什么问题导致了这种情况?
最佳答案
问题可能是因为您没有处于输入的最开始位置,而这正是 \A
匹配的内容。
尝试使用多行标志和正常的开始 anchor :
"(?m)^-+\\d+$"
启用多行标志后,^
和 $
匹配每个行的开始和结束,而不是整个输入的开始和结束。
关于java - 正则表达式匹配器在 JUnit 上工作但在 Servlet 容器上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53463625/