0

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

以及以下两个网址:

www.domain.com:8051/first/second

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

两个网址都匹配。但我只想匹配第一个。我必须怎么做才能将“/”排除为要匹配的字符?

谢谢,琼。

4

3 回答 3

1

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

www.domain.com:8051/([^/]*)/([^/]*)
于 2012-05-09T22:30:18.643 回答
1

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

而不是.*,使用.*?. 当我第一次学习如何使用正则表达式时,我发现这个备忘单非常有用。

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

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

于 2012-05-09T22:31:34.420 回答
1

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

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

于 2012-05-09T22:36:55.157 回答