我需要使用正则表达式来过滤大量 url 列表,例如:

/page-to-search-for/id/any-string

问题是该列表还包括带有子页面的 url,例如
/page-to-search-for/id/any-string/registration-form

这些页面需要从结果中排除。

所以,正则表达式需要有点像:
/page-to-search-for\/(\d+)\/(\w+)(\/?(?!registration-form))

不幸的是,最后一部分不起作用。

希望有人可以帮助我吗?

谢谢!

最佳答案

似乎您想阻止任何在 any-string 之后、在字符串位置末尾具有 registration-form 的 URL。

您可以使用

some-page\/(\d+)\/([^\/]+)(?:\/(?!registration-form$).*)?$

请参阅 regex demo

我建议用 \w 替换 [^\/]+ (以匹配任何子部分,1+ 个字符而不是 / )并且 (?:\/(?!registration-form$).*)?$ 将匹配:
  • (?:\/(?!registration-form$).*)?$ - 1 或 0(可选)序列:
  • \/ - 斜线
  • (?!registration-form$) - 后面没有 registration-form 和字符串结尾 ($)
  • .* - 任何 0+ 个字符
  • $ - 字符串结束。
  • 关于网址的正则表达式过滤器列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42898622/

    10-11 20:09