我有一些URL模式,总是从顶层URL后面的3个单词中的一个开始:
word1
word2
word3
然后在几个子目录中可以有任何内容(最多4层深度),但始终是:
lowercaseword
或lowercaseword-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/