如何使用正则表达式排除变量字符串的最后一部分

时间:2018-02-13 00:07:55

标签: regex url

我目前正在制作一堆使用类似网址结构的着陆页,但每个网址的字数各不相同。

所以它是这样的:

http://landingpage.xyz/page-number-five
http://landingpage.xyz/page-number-fifty-four
http://landingpage.xyz/page-for-a-different-topic

对于发送的页面我只是像这样postfix -sent。我没有将其添加为/sent的原因是因为我使用的平台以这种方式处理URL。

http://landingpage.xyz/page-number-five-sent
http://landingpage.xyz/page-number-fifty-four-sent
http://landingpage.xyz/page-for-a-different-topic-sent

现在我发现制作一个标识所有已发送页面的正则表达式很容易让我们说:

\/([a-z0-9\-]*)-sent

问题是我不确定如何识别未发送的那些。我尝试使用类似的正则表达式,但它没有按预期工作:

\/([a-z0-9\-]*)(?!-sent)

为此设计正则表达式的最佳方法是什么?或者我是以错误的方式接近它?

1 个答案:

答案 0 :(得分:1)

在需要匹配某些字符的情况下,应考虑前瞻。所以在正则表达式结束时,一个人不会寻找任何东西。只要我不确定您的环境是否支持lookbehinds,这应该是一种解决方法:

\/(?!.*-sent\b)([a-z0-9\-]*)