2014-04-07 38 views
2

我正在寻找一个正则表达式,它将匹配任何不包含反斜杠的内容。我一直在http://regex101.com/#PCRE上尝试正则表达式,但这两者都不是真的有帮助。PRCE正则表达式排除特定字符?

我想匹配任何URL字符串,看起来像它在路径只有一个斜线:

/path/page 
/path/anypage 

而且不匹配更多的斜杠任何网址:到目前为止

/path/morepath/page 
/path/morepath/andmorepath/page 

,我的正则表达式看起来像\/path\/[a-z]+,但也很高兴地匹配更多斜杠的URL。

如何排除这些网址?

+0

你忘了逃脱你的第二个斜杠,它是作为一个结束分隔符:'\ /路径\/[AZ] +' 。或者(取决于语言),您可以使用不同的分隔符,如'#'或'〜'('#/ path/[a-z] +#')。 – Sam

+0

@Sam - 谢谢,已编辑,但问题仍然相同! – Richard

+0

退房@杰里的回答:) – Sam

回答

3

带有负向视向,或者带有否定的类。

取反类:

^/path/[^/]*$ 

demo

求反类将匹配除了里面有什么,在这种情况下,一切,在最后一个斜杠和锚$确保字符串进行测试,直到结束。

负前瞻:

^/path/(?!.*/) 

demo

负前瞻将使如果里面有什么相匹配的整场比赛失败。因此,如果.*/匹配负向预测点,则匹配将失败。

注:我通常使用分隔符,它使用的字符不出现在我的正则表达式中。在这种情况下,我将分号从/更改为~

+1

作为一个注释,取决于分隔符,'/'可能需要转义。 – Sam

+0

@Sam补充,谢谢! – Jerry

+0

太棒了,谢谢!我想出了否定的类,但没有意识到我必须在最后加上'$'来确保整个字符串被测试。再次感谢您提供非常有用的答案。 – Richard