java - 正则表达式匹配器在 JUnit 上工作但在 Servlet 容器上失败

标签 java regex

这是我的测试字符串

-----------------------------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/

相关文章:

java - SmartGwt SelectItem 以编程方式进行多重选择

regex - 在 bash 中使用从行的中间或末尾提取单词

java - 我是否总是需要转义不是 "literal"的字符串中的元字符?

PHP 正则表达式使 Apache 崩溃

java - 在客户端计算机上部署 java(swing, oracle) 项目时出错... java.lang.ClassNotFoundException :oracle. jdbc.driver.oracleDriver

带有 mysql workbench 的 JavaFX 登录系统

java - Java是否将文件路径中的多个斜杠 "\\\\\\"视为单个 "\\"?

java - 仅当互联网连接可用时才允许切换

javascript - 用变量和 anchor 替换正则表达式

sql - postgresql 9.5 : trying to split a string into two fields based on spaces