如何使正则表达式仅匹配完全匹配?
好的,基本上我有一些通过正则表达式匹配 URL 的代码。然后它会根据 URL 匹配的正则表达式调用一些函数。我从不想为一个 URL 调用多个函数,并且我希望正则表达式匹配必须是“精确的”
例如,对于简单的 URL /
我使用一个简单的正则表达式 /
将匹配 /
,但它也会匹配 /foo
和 /foo/bar
等内容。
如何防止 C#/.Net 中的这种部分匹配行为?
Ok, so basically I have some bit of code that matches URLs by regexs. It then will call some function based on which regex the URL matches against. I never want for more than one function to be called for a URL and I want the regex matches to have to be "exact"
For instance, with the simple URL /
I use a simple regex /
which will match /
but it will also match things like /foo
and /foo/bar
.
How can I prevent this partial matching behavior in C#/.Net?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
^
匹配字符串的开头,使用$
匹配字符串的结尾。例如:
^/$
匹配/
但不匹配/foo
。^/
匹配/foo
但不匹配foo/
。Use
^
for matching the start of a string and$
for the end of a string.For example:
^/$
matches/
but not/foo
. And^/
matches/foo
but notfoo/
.在要匹配的关键字的开头和结尾处添加空格。
例如,您有一个字符串
“Hey!foobar I am foo bar。”
现在假设您想匹配foo。您可以执行此操作
/\s+foo\s+/i
这将仅返回 foo 而不是 foobar 的匹配项。Append space at start and end of keyword you want to match with.
For example you have a string
"Hey! foobar I am foo bar."
Now lets say you want to match foo.You can do this
/\s+foo\s+/i
this will return match for only foo and not foobar.