匹配网址的模式

时间:2012-05-09 22:24:18

标签: regex routes

我有以下模式:www.domain.com:8051 /(。 * )/(。*)

以下两个网址:

www.domain.com:8051/first/second

www.domain.com:8051/first/second/third/fourth

两个网址匹配。但我只想匹配第一个。我该怎么做才能将“/”排除在匹配的字符之外?

谢谢, 琼。

3 个答案:

答案 0 :(得分:1)

为了排除字符,您应该使用[^<characters to exclude>],所以在您的情况下:

www.domain.com:8051/([^/]*)/([^/]*)

答案 1 :(得分:1)

当您需要使用不情愿的量词时,您正在使用贪婪的正则表达量词。

而不是.*,请使用.*?。我在第一次学习如何使用正则表达式时发现this cheat sheet非常有帮助。

www.domain.com:8051/(.*?)/(.*?)

编辑: 稍微弄乱一下这个模式后,我无法想出一个有效的模式,但是你可以检查上面的模式是否找到了,而且下面的模式不是:www.domain.com:8051/(.*?)/(.*?)/$

答案 2 :(得分:1)

如果这些是唯一的模式,为什么不拆分“/”并检查长度?

您仍然可以访问这些组件。