【问题标题】:Java regex URL for MockServer expectationMockServer 期望的 Java 正则表达式 URL
【发布时间】:2018-07-01 15:00:14
【问题描述】:

我正在尝试在 MockServer 中设置一些期望,我对匹配此路径的请求有特定的期望

/api/users/:user_id

使用正则表达式/api/users/.*

但是,在访问特定于用户的资源时,我还有一些其他期望:

/api/users/:user_id/books
/api/users/:user_id/books/:book_id
/api/users/:user_id/holidays

我不太确定如何正确使用正则表达式来匹配第一个路径,同时又不会影响对用户特定资源的请求(即所有请求都在第一个路径上匹配)。

例如,我相信对于 /api/users/:user_id/books 路径,我可以使用正则表达式 /api/users/.*/books,但这永远不会匹配,因为第一个路径的正则表达式 /api/users/.* 将始终匹配这些更深层次的 URL。

我一直在阅读 this page,但无法完全弄清楚如何在这种特殊情况下正确使用正则表达式

【问题讨论】:

  • :user_id 可以取什么值?或者,您是否尝试匹配文字文本 :user_id
  • 它接受任何带有字母数字字符的字符串
  • 从我收集到的信息看来 ([^/]+) 可以满足我的需要

标签: java regex url url-parsing mockserver


【解决方案1】:

这里的一种通用方法可能是使用否定的前瞻断言。对于一般情况,您可以使用以下模式:

/api/users/\d+/(?!books|holidays)

然后,对于更具体的情况,使用您已经想到的模式,例如

/api/users/\d+/books
/api/users/\d+/holidays

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2015-02-19
    • 2011-07-30
    • 2012-02-04
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多