【问题标题】:How to make Regexs only match on exact-matches?如何使正则表达式仅匹配完全匹配?
【发布时间】:2011-01-03 00:59:44
【问题描述】:

好的,所以基本上我有一些通过正则表达式匹配 URL 的代码。然后它将根据 URL 匹配的正则表达式调用一些函数。我从不希望为 URL 调用多个函数,并且我希望正则表达式匹配必须是“精确的”

例如,对于简单的 URL /,我使用了一个简单的正则表达式 /,它将匹配 /,但它也将匹配 /foo/foo/bar 之类的东西。

如何在 C#/.Net 中防止这种部分匹配行为?

【问题讨论】:

  • 您是否尝试过使用 .NET URL Routing 而不是滚动自己的路由调度程序?
  • @JacobKrall 很有趣,你应该提到这一点。在这个问题之后一个月,我继续实现了我自己的 URL 路由(以比 .Net 更独立的方式)方法:P

标签: c# .net regex exact-match


【解决方案1】:

使用^ 匹配字符串的开头,使用$ 匹配字符串的结尾。

例如:^/$ 匹配 / 但不匹配 /foo^/ 匹配 /foo 但不匹配 foo/

【讨论】:

  • 嗯。我不得不改变一些正则表达式来解决这个问题,但这似乎是答案。我不确定是否可以通过稍微修改正则表达式来做到这一点
【解决方案2】:

在要匹配的关键字的开头和结尾添加空格。 例如,您有一个字符串 "Hey! foobar I am foo bar." 现在假设您要匹配 foo。 你可以这样做/\s+foo\s+/i 这将只返回匹配 foo 而不是 foobar。

【讨论】:

  • 如果单词是字符串的第一个或句子中的最后一个或字符串,这不起作用。
猜你喜欢
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多