2012-05-09 63 views
0

的作品我有以下模式:www.domain.com:8051//模式匹配网址

而下面的两个URL(*)(。*):

WWW。 domain.com:8051/first/second

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

两个URL匹配。但我只想匹配第一个。我必须做什么才能排除“/”作为匹配的字符?

感谢, 琼。

回答

1

为了排除字符,你应该这样,你的情况使用[^<characters to exclude>]

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

您使用的是贪婪正则表达式量词,当你需要使用不愿意量词。

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

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

编辑: 与位模式乱搞后,我一直没能拿出其工作的模式,但你可以检查上面的图案被发现,并下面的模式是不是:www.domain.com:8051/(.*?)/(.*?)/$

+0

这不符合第二个网址吗? –

+0

- 不正确,已删除 - – Vulcan

+0

由于没有结尾斜杠,所以它们不匹配。 –

1

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

您仍然可以访问组件。