PCRE正则表达式排除特定字符?

时间:2014-04-07 18:44:05

标签: regex pcre

我正在寻找一个能够匹配任何不包含反斜杠的正则表达式。我一直在试用http://regex101.com/#PCRE上的正则表达式,但谷歌并没有真正帮助它。

我想匹配任何看起来在路径中只有一个斜杠的网址字符串:

/path/page
/path/anypage

并且不匹配任何带有更多斜杠的网址:

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

到目前为止,我的正则表达式看起来像\/path\/[a-z]+,但是也很乐意匹配带有更多斜杠的URL。

如何排除这些网址?

2 个答案:

答案 0 :(得分:3)

具有否定的前瞻性或否定的等级。

否定课程:

^/path/[^/]*$

demo

否定的类将匹配除了内部的所有内容,在这种情况下,正斜杠和末尾的锚$确保字符串被测试直到结束。

否定前瞻:

^/path/(?!.*/)

demo

如果内部匹配,那么否定前瞻将使整个匹配失败。因此,如果.*/在否定前瞻点处匹配,则匹配将失败。

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

答案 1 :(得分:2)

这应该有效:

^(?:\/\w+){2}$

演示:http://regex101.com/r/gM4nG9