Regex Spring映射正则表达式
我有一个需要提供两个GET实现的控制器。 第一个返回一个字符串,应该映射到如下所示的路径: /config/category/subcategory 1/…/propertyValue 第二个返回一个映射,应该映射到如下所示的路径Regex Spring映射正则表达式,regex,spring-mvc,Regex,Spring Mvc,我有一个需要提供两个GET实现的控制器。 第一个返回一个字符串,应该映射到如下所示的路径: /config/category/subcategory 1/…/propertyValue 第二个返回一个映射,应该映射到如下所示的路径 /config/Computers/Hardware/Storage/Hard_Drives /config/([^\/]+)(\/[^\/]+)+ /config/([^\/]+)(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]
/config/Computers/Hardware/Storage/Hard_Drives
/config/([^\/]+)(\/[^\/]+)+
/config/([^\/]+)(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?
/config/category/subcategory 1/…/subcategory 4/
基本上不同的是,一条路径以“/”结尾,而另一条路径不以“/”结尾。我尝试过几种选择,但都不适用于多个级别的子类别
谢谢你的想法 第一种模式很简单,至少基于您的基本示例。您可能需要删除开头的
\/
\/config/([^\/]+)\/.+\/(.+)
我假设config/
是静态的,所以我们将把它排除在外。。之后,我们捕获所有不是正斜杠的内容,当遇到正斜杠时,正斜杠将停止。这是反向参考。我们添加一个静态正斜杠,然后捕获所有内容直到最后一个正斜杠,添加一个静态正斜杠,然后捕获最后一个正斜杠之后的所有内容直到字符串结束
至于第二种模式
假设你有一个这样的分类模式
/config/Computers/Hardware/Storage/Hard_Drives
/config/([^\/]+)(\/[^\/]+)+
/config/([^\/]+)(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?
Regex无法将无限递归作为单独的变量捕获,但是您可以像这样捕获一个变量
/config/Computers/Hardware/Storage/Hard_Drives
/config/([^\/]+)(\/[^\/]+)+
/config/([^\/]+)(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?
在上面的示例中,反向参考1将包含计算机
,反向参考2将包含/硬件/存储/硬盘驱动器
你可以设计一个这样的正则表达式
/config/Computers/Hardware/Storage/Hard_Drives
/config/([^\/]+)(\/[^\/]+)+
/config/([^\/]+)(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?(?:\/([^\/]+))?
这将达到五个层次的深度。。并捕获每个类别作为其自己的反向参考。如果您需要更深入的匹配,您可以在行的末尾添加另一个
(?:\/([^\/])?
。您可以发布到目前为止已经尝试过的内容吗?我不知道从何处开始这个问题中的所有概念问题。看起来你完全错了,要么你想强迫spring使用格式错误的uri,要么你不想使用REST概念,比如路径参数。