【发布时间】:2015-05-30 07:28:52
【问题描述】:
我正在尝试使用 Spring MVC 的 RequestMapping 的正则表达式可能性来区分几个 REST API:
/somepath/{item:[^&?/]+}/{subitem:[^&?/]+}
/somepath/{item:[^&?/]+}
/somepath
在每种情况下,API 都会返回一个完全不同的 JSON 对象。
Spring MVC 有一个通常有用的习惯,即合并多个斜杠或忽略尾随斜杠。但是,在这种情况下,我需要解决这个问题。所以我使用正则表达式来处理路径变量为空的情况,即停止 /somepath//asubitem 匹配第二个 API 而不是第一个。
问题是当我在正则表达式中使用斜线字符时,模式将不匹配。仅使用 [^&?]+ 匹配,但显然这不是我所需要的。
有谁知道我们为什么会有这种正则表达式行为以及如何解决它?
【问题讨论】:
-
您必须通过使用另一个
/来转义/,因此//将匹配您的/here 您将在下面接受的答案中找到来自 SO 社区的更多信息 -
不,这没有帮助。引用的帖子谈到加倍反斜杠而不是正斜杠。
-
+量词强制在双斜杠之间至少有一个字符:使用* -
接受你的观点,但它没有帮助。似乎双斜杠在 before 查找之前被混淆了:DEBUG RequestMappingHandlerMapping -- 查找路径 /somepath/asubitem 的处理程序方法
标签: java regex spring spring-mvc regex-negation