代码之家  ›  专栏  ›  技术社区  ›  Fuzzy Analysis

RESTEasy Web方法的@Path中的正则表达式

  •  1
  • Fuzzy Analysis  · 技术社区  · 12 年前

    我需要在我的 @Path 语句,以允许下面两种类型的url连接到web方法:

    …其中id=“r2lXIcBfNfnp2yOK”,版本可以是“1”或“1.0.0”。如何做到这一点?

    到目前为止,我的方法接受版本为“1.0.0”,但不接受“1”:

     @GET() 
     @Produces("application/x-protobuf") 
     @Path("/Things/{id}.{version:
     (([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}")
        public String getThing( 
           @PathParam("id") String id, 
        @PathParam("version") @DefaultValue("1.0.0") String version, 
        @Context final HttpServletResponse response) 
    {       
           //.... (rest of the method, irrelevant
    }
    

    我可以将另一个正则表达式添加到上面的@Path语句中,以允许“1”作为一个版本?

    我试过了:

    @Path("/{id}.{version: (([0-9\\*^\\.])|([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}
    

    ……但这行不通。

    我也尝试过:

    @Path("/{id}.{version: (([0-9\\*])|([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}
    

    ……但当我输入一个版本“1.0.0”时,这只会切断第一个数字,使其变为“0.0”。

    提前感谢您的帮助。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Naveed S    12 年前

    使用 \\d+((\\.\\d+){2})? 允许 <number> <number>.<number>.<number>

    \\d+ 允许一个或多个数字

    (\\.\\d+){2} 允许的模式 一后跟一个或多个数字 发生 两次

    以下内容 ? 使第二种模式可选