如何编写正则表达式以匹配由3个斜杠分隔的字符?

2024-06-25 23:49:47 发布

您现在位置:Python中文网/ 问答频道 /正文

任何字符串都可以在斜线中,但必须只有3个分区。例如, 应匹配的值:

  1. “90/90/90/9090”
  2. “FDSAFDSA/90/PPPPP AA3/9090”

不应匹配的值:

  1. “90/90/90/9090/90”
  2. “FDSAFDSA/90/PPPPP AA3/9090/90”

我正在使用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"))

Tags: 字符串rematchbool分区斜线aa3ppppp
1条回答
网友
1楼 · 发布于 2024-06-25 23:49:47

您应该使用negated character classes

^[^/]*/[^/]*/[^/]*/[^/]*$

[^/]匹配除/之外的任何字符,因此我们表示一个包含三个/及其周围任何内容的字符串

在您的正则表达式中,.可以匹配包括/在内的任何内容,虽然您可以使用负环型近似等于否定字符类,但您没有正确地将它们应用于您拥有的每个.^((?!\/).)*\/((?!\/).)*\/((?!\/).)*\/((?!\/).)*$也可以工作,尽管它的性能较差

没有必要转义这些/,它们不是正则表达式元字符。您可能需要在使用/作为分隔符的语言或工具中转义它们,例如JavaScript的/pattern/语法或sed的s/search/replace/替换

相关问题 更多 >