我有以下模式:www.domain.com:8051 /(。 * )/(。*)
以下两个网址:
www.domain.com:8051/first/second
www.domain.com:8051/first/second/third/fourth
两个网址匹配。但我只想匹配第一个。我该怎么做才能将“/”排除在匹配的字符之外?
谢谢, 琼。
答案 0 :(得分:1)
为了排除字符,您应该使用[^<characters to exclude>]
,所以在您的情况下:
www.domain.com:8051/([^/]*)/([^/]*)
答案 1 :(得分:1)
当您需要使用不情愿的量词时,您正在使用贪婪的正则表达量词。
而不是.*
,请使用.*?
。我在第一次学习如何使用正则表达式时发现this cheat sheet非常有帮助。
www.domain.com:8051/(.*?)/(.*?)
编辑:
稍微弄乱一下这个模式后,我无法想出一个有效的模式,但是你可以检查上面的模式是否找到了,而且下面的模式不是:www.domain.com:8051/(.*?)/(.*?)/$
答案 2 :(得分:1)
如果这些是唯一的模式,为什么不拆分“/”并检查长度?
您仍然可以访问这些组件。