【发布时间】:2020-09-16 03:32:25
【问题描述】:
我正在尝试从匹配中排除某些 URL,其中包含 /com/de/cms/ 例如:
匹配这个:
www.example.com/catname/all-from-category/?pageNumber=1
但不是这个:
example.com/com/de/cms/catname/all-from-category/?pageNumber=3
正则表达式:
^[^com\/de\/cms\/]+\/all-from-category\/\?pageNumber=\d(&hitsPerPage=\d)?
https://regex101.com/r/Mqpspq/1
如何在匹配另一个 URL 的同时排除带有 com/de/cms/ 的 URL?
【问题讨论】:
-
您的正则表达式可能缺少
"catname"? -
我认为“+”表示除之前定义的字符串之外的所有内容。其中将包括“猫名”。这是错的吗?
-
+表示出现一次或多次之前的情况。 -
你需要negative lookahead
(?!.*\/com\/de/cms\/)在行首锚之后,但是你的正则表达式还有其他问题。一方面,因为(&hitsPerPage=\d)?在正则表达式的末尾并且是可选的,所以它没有效果。 -
@CarySwoveland 谢谢!这似乎有效: "^(?!.*\/com\/de/cms\/).*\/all-from-category\/\?pageNumber=\d(&hitsPerPage=\d)?$"
标签: regex