首頁 > 後端開發 > Golang > Go正規表示式符合時如何排除特定字串?

Go正規表示式符合時如何排除特定字串?

Mary-Kate Olsen
發布: 2024-12-20 07:58:12
原創
853 人瀏覽過

How to Exclude a Specific String When Matching in Go Regular Expressions?

在Go 正規表示式中符合除常數字串之外的所有內容

在Go 中,利用正規表示式引擎RE2,沒有直接的方法使用前瞻斷言來匹配所有內容除特定字串之外的字元。但是,還有其他方法可以實現此功能:

產生否定模式的Web 服務

  1. 使用線上服務[Non-match REGEX](http : //www.formauri.es/personal/pgimeno/misc/non-match-regex)為您想要排除的字串產生否定模式(本例為「somestring」)。
  2. 在正規表示式中,將最後一個 (.*) 替換為產生的否定模式(確保複製的否定模式中沒有反斜線)。

例如,如果產生的否定模式是:

[^([^s]|s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*([^os]|o([^ms]|m([^es]|e([^s]|s(omes)*([^ost]|t([^rs]|r([^is]|i([^ns]|n[^gs])))|o([^ms]|m([^es]|e[^s]))))))))*(s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*(o((me?)?|mes(omes)*(t(r?|rin?)|o(me?)?)?))?)?$
登入後複製

您的最終正規表示式將如下所示例如:

/[^/]*/[^/]*/(([^s]|s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*([^os]|o([^ms]|m([^es]|e([^s]|s(omes)*([^ost]|t([^rs]|r([^is]|i([^ns]|n[^gs])))|o([^ms]|m([^es]|e[^s]))))))))*(s(s|o(s|m(s|es(omes)*(s|t(s|r(s|i(s|ns)))|o(s|ms)))))*(o((me?)?|mes(omes)*(t(r?|rin?)|o(me?)?)?))?)?)$
登入後複製

捕捉所有部分

或者,您可以將輸入字串的所有三個部分(用正斜線分隔)捕獲到一個切片中。然後,檢查第三部分 (val[1]) 是否等於您要排除的字串(在本例中為「somestring」)。如果不匹配,則使用 val[1] 作為預期結果:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    s := "anything/anything/somestring"
    r := regexp.MustCompile(`^[^/]+/[^/]+/(.*)`)
    val := r.FindStringSubmatch(s)
    // fmt.Println(val[1]) // -> somestring
    if len(val) > 1 && val[1] != "somestring" { // val has more than 1 element and is not equal to somestring?
        fmt.Println(val[1])      // Use val[1]
    } else {
        fmt.Println("No match")  // Else, report no match
    }
}
登入後複製

以上是Go正規表示式符合時如何排除特定字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板