我需要使用正则表达式来过滤大量 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/