这是我的测试字符串
-----------------------------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
为null,因此匹配器不起作用。
可能是什么原因引起的?
答案 0 :(得分:0)
问题可能是因为您不是刚开始输入\A
所匹配的内容。
尝试使用多行标志和正常的起始锚点:
"(?m)^-+\\d+$"
启用多行标志后,^
和$
匹配每条行的开始和结束,而不是整个输入的开始和结束。