簡體   English   中英

如何編寫一個正則表達式來匹配由 3 個斜杠分隔的字符?

[英]how to write a regex to match characters separated by 3 slashes?

斜線之間可以有任何字符串,但必須只有 3 個分區。 例如,應匹配的值:

  1. “90/90/90/9090”
  2. “FDSAFDSA/90/pppppaA3/9090”

不應該匹配的值:

  1. “90/90/90/9090/90”
  2. “FDSAFDSA/90/pppppaA3/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"))

您應該使用否定字符類

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

[^/]匹配除/任何字符,因此我們表示一個包含三個/以及它們周圍的任何其他字符的字符串。

在您的正則表達式中, . 可以匹配包括/在內的任何內容,雖然您可以使用否定查找來近似等效的否定字符類,但您沒有正確地將它們應用於每個. 你有: ^((?!\\/).)*\\/((?!\\/).)*\\/((?!\\/).)*\\/((?!\\/).)*$也會起作用,盡管它的性能會降低。

並且沒有必要轉義那些/ ,它們不是正則表達式元字符。 您可能需要在使用/作為分隔符的語言或工具中對它們進行轉義,例如 JavaScript 的/pattern/語法或 sed 的s/search/replace/替換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM