C# 如何使正则表达式仅与精确匹配?

C# 如何使正则表达式仅与精确匹配?,c#,.net,regex,exact-match,C#,.net,Regex,Exact Match,好的,基本上我有一些代码通过正则表达式匹配URL。然后,它将根据URL匹配的正则表达式调用一些函数。我从不希望一个URL调用多个函数,我希望正则表达式匹配必须“精确” 例如,对于简单的URL/,我使用一个简单的正则表达式/,它将匹配/,但它也将匹配/foo和/foo/bar等内容 如何在C#/.Net中防止这种部分匹配行为?使用^匹配字符串的开头,使用$匹配字符串的结尾 例如:^/$匹配/,但不匹配/foo。和^/匹配/foo,但不匹配foo/在要匹配的关键字的开头和结尾追加空格。 例如,您有一

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

例如,对于简单的URL
/
,我使用一个简单的正则表达式
/
,它将匹配
/
,但它也将匹配
/foo
/foo/bar
等内容


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

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


例如:
^/$
匹配
/
,但不匹配
/foo
。和
^/
匹配
/foo
,但不匹配
foo/

在要匹配的关键字的开头和结尾追加空格。 例如,您有一个字符串
“嘿!foobar我是foobar。”
现在让我们假设您想要匹配foo。
你可以这样做
/\s+foo\s+/i
这将只返回foo而不是foobar的匹配项。

Hmm。我不得不改变一些正则表达式来处理这个问题,但这似乎是答案。我不确定只需稍微修改常规表达式就可以做到这一点。您是否尝试过使用.NET URL路由而不是滚动您自己的路由调度器?@JacobKrall有趣的是,您应该提到这一点。我接着实现了我自己的URL路由(以一种比.Net更独立的方式)方法,就像在这个问题一个月后:p如果单词是字符串的第一个或句子或字符串中的最后一个,那么这个方法不起作用。