【问题标题】:Spring MVC url matching with regexSpring MVC url与正则表达式匹配
【发布时间】: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


【解决方案1】:

你可以试试这个

/\//ig; //  Matches /

更多详情请参考以下网址

Forward Slash with a regex

【讨论】:

  • Errrr,这一个java问题。不是javascript问题。 Java 不使用正则表达式的斜线语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 2011-02-19
相关资源
最近更新 更多