我有一些URL模式,总是从顶层URL后面的3个单词中的一个开始:

word1
word2
word3

然后在几个子目录中可以有任何内容(最多4层深度),但始终是:
lowercasewordlowercaseword-lowercaseword
现在我正在搜索一个与此完全匹配的reg ex,但不是以下划线开头的子目录:
_lowercaseword
所以我的网址是:
example.com/word1/lowercaseword/lowercaseword/?parameters
example.com/word2/lowercaseword/
example.com/word3/lowercaseword/lowercaseword/lowercaseword/
example.com/word2/lowercaseword/lowercaseword/_lowercaseword/

我在找一个和前三个匹配的前妻。
我搞不清周围的负面表情(如果需要的话)。
有什么想法吗?
这些是我的表达,但它们不起作用:
\/(word1|word2|word3)\/((?!\_)[a-z]+(\-[a-z]+)?\/){0,4}
\/(word1|word2|word3)\/([!\_a-z]+(\-[a-z]+)?\/){0,4}

最佳答案

你可以用

^[^/]+/(word1|word2|word3)(?:/[a-z]+(?:-[a-z]+)?){0,4}/?(?:\?.*)?$

请参见regex demo
细节
^-字符串开始
[^/]+-1+字符而不是/
/-斜线
(word1|word2|word3)-任何一个词
(?:/[a-z]+(?:-[a-z]+)?){0,4}-0到4次重复/,1+小写ASCII
字母,然后是-和1+小写ASCII字母的可选序列
/?-可选/
(?:\?.*)?-一个可选的?序列,然后是任何0+字符,直到。。。
$-字符串结束。

关于python - 使用Reg Ex进行否定的环顾或否定的断言,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54304875/

10-12 16:50