当前位置: 首页 > 面试题库 >

Spring @RequestMapping“不包含”正则表达式

狄玉书
2023-03-14
问题内容

我有此RequestMapping:

@RequestMapping(value = "/route/to-{destination}-from-{departure}.html", method = {RequestMethod.GET, RequestMethod.HEAD})

我想添加该RequestMapping:

@RequestMapping(value = "/route/to-{destination}.html", method = {RequestMethod.GET, RequestMethod.HEAD})

因此,它可以服务于所有“无出发”路线。但是,这会产生冲突,因为“ / route / to-destination-from-departure”
URL实际上也与第二个RequestMapping匹配…很公平,所以我的解决方案是指定一个正则表达式

@RequestMapping(value = "/route/to-{destination:^((?!-from-).)+}.html", method = {RequestMethod.GET, RequestMethod.HEAD})

因此,如果“目标”包含“ -from-”,则RequestMapping将不匹配。

而且…不起作用!网址“ /route/to-barcelona-from-
paris.html”已成功通过第一个RequestMapping提供,但网址“ /route/to-
barcelona.html”却根本未提供…我缺少什么?

注意:我不想使用Java解决方案,例如只有一个“ / route / to- {destination}” RequestMapping,然后检查“
destination”是否包含“ -from-” .. :)另外,我也无法更改这些路线是因为SEO …


问题答案:

您可以使用

"/route/to-{destination:(?!.*-from-).+}.html"

^主播将搜索字符串的开始,并将在此处失败的任何比赛。

(?!.*-from-)排除模式将失败包含任何输入-from-比换行符字符以外的任何字符0+后。

.+模式将消耗除行换行符之外的所有1个或更多字符。



 类似资料:
  • 我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达

  • 我发现正则表达式不包含101,如下所示: 0*1*0*(1 00 000)*(010)* 我无法理解作者是如何想出这个正则表达式的。所以我只想到了不包含101的字符串: 01000100 我似乎上面的字符串不会与上面的正则表达式匹配。但我不确定。所以尝试在regex101.com上翻译成等效的pcre正则表达式,但也失败了(因为可以看到我的正则表达式甚至不匹配包含单个1的字符串。 我的翻译有什么问

  • 我将一个regex模式列表传递给< code>grep来检查syslog文件。它们通常匹配IP地址和日志条目; 这只是一个模式列表,例如我正在循环传递的“1\.2\.部分,因此我无法传递“-v”。 我很困惑试图做上述的逆,不匹配线与某个IP地址和错误!1.2.3.4.*已爆炸”将匹配除1.2.3.4告诉我它已爆炸之外的任何syslog行。我必须能够包括一个IP地址不匹配。 在Stack Overf

  • 最根本的区别只是路径中应该由正则表达式(“.+”)处理的组件的数量,但当该部分有斜杠时似乎不起作用。 如果有帮助,请在日志中提供以下内容: 2015-03-03 23:03:53.588信息15324---[main]s.w.s.m.m.a.RequestMappingHandlerMapping:将“{[/webjars-locator/{webjar}/{partialPath:.+}],Me

  • 我在创建Django URL正则表达式时遇到问题,该正则表达式允许所有字符(包括正斜杠)。更具体地说,我遇到的问题是区分URL参数中使用的正斜杠和URL中用作分隔符的正斜杠。 例如: 我有一个URL,看起来像这样:localhost:8000/jfe/customer/customerNumb/invoice2/portfolio/ 这包括3个URL参数:customerNumb、invoice2

  • 问题内容: 我知道可以匹配一个单词,然后使用其他工具(例如grep -v)将匹配项反转。但是,是否可以hede使用正则表达式来匹配不包含特定单词的行? 输入: 码: 所需的输出: 问题答案: 正则表达式不支持逆匹配的说法并不完全正确。您可以使用否定环顾模仿此行为: 上面的正则表达式将匹配任何不包含(sub)字符串’hede’的字符串或没有换行符的行。如前所述,这是不是正则表达式是“好”的(或应该做