斜线之间可以有任何字符串,但必须只有 3 个分区。例如,应匹配的值:
不应该匹配的值:
我正在使用 python 和 re 库,我尝试了很多组合,但都没有奏效:
bool(re.match(r'^.*\/.*\/.*\/((?!\/).)*$', "90/90/90/9090/90"))
bool(re.match(r'^.*\/.*\/.*\/((?!/).)*$', "90/90/90/9090/90"))
bool(re.match(r'^.*\/.*\/.*\/(?!(/)$).*$', "90/90/90/9090/90"))
bool(re.match(r'^.*\/.*\/.*\/(/).*$', "90/90/90/90/90"))
bool(re.match(r'^.*\/.*\/.*\/.*(\/)$', "90/90/90/90/90"))
Run Code Online (Sandbox Code Playgroud)
您应该使用否定字符类:
^[^/]*/[^/]*/[^/]*/[^/]*$
Run Code Online (Sandbox Code Playgroud)
[^/]匹配任何字符 but /,因此我们表示一个字符串,其中包含三个/以及它们周围的任何其他内容。
在您的正则表达式中, the.可以匹配任何内容,包括/,并且虽然您可以使用否定环视近似等效于否定字符类,但您没有正确地将它们应用于.您拥有的每个:^((?!\/).)*\/((?!\/).)*\/((?!\/).)*\/((?!\/).)*$也可以工作,尽管它的性能会降低.
并且没有必要逃避这些/,它们不是正则表达式元字符。您可能需要在/用作分隔符的语言或工具中对它们进行转义,例如 JavaScript 的/pattern/语法或 sed 的s/search/replace/替换。
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |