我的网址格式始终以顶级网址后面的3个字之一开头:
word1
word2
word3
那么,在几个子目录中(最高可达4层)可能有任何东西,但总是:
lowercaseword
或lowercaseword-lowercaseword
现在,我正在搜索一个正则表达式,它将与此完全匹配,但不是以下划线开头的子目录:
_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}
答案 0 :(得分:1)
您可以使用
^[^/]+/(word1|word2|word3)(?:/[a-z]+(?:-[a-z]+)?){0,4}/?(?:\?.*)?$
请参见regex demo。
详细信息
^
-字符串的开头[^/]+
-除/
以外的1个以上的字符/
-斜杠(word1|word2|word3)
-任何单词(?:/[a-z]+(?:-[a-z]+)?){0,4}
-/
的零到四个重复,1个小写ASCII
字母,然后是-
和1+小写ASCII字母的可选序列/?
-可选的/
(?:\?.*)?
-?
的可选序列,然后是0到...之间的任意字符。$
-字符串的结尾。