ホームページ > バックエンド開発 > Golang > Go Regex を使用するときに特定の文字列を除外するにはどうすればよいですか?

Go Regex を使用するときに特定の文字列を除外するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-17 08:57:24
オリジナル
126 人が閲覧しました

How to Exclude Specific Strings When Using Go Regex?

Go 正規表現: 特定の文字列の除外

Go では、regexp パッケージを使用して特定の定数文字列以外のものを一致させようとすると、問題が発生する場合があります。 。 Go 正規表現の構文が制限されているため、先読みを伴う推奨ソリューションの多くは適用できませんが、代替アプローチが利用可能です。

回避策 1: 否定パターン ジェネレーターを使用する

Go 正規表現以降は先読みをサポートしていません。次のような外部サービスの使用を検討してください。 http://www.formauri.es/personal/pgimeno/misc/non-match-regex で否定パターンを生成します。たとえば、「somestring」の否定パターンは次のとおりです。

$ ^([^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?)?)?))?)?)$
ログイン後にコピー

または、[^/] パターンを使用して、/ 以外の 0 個以上の文字と一致させることもできます。 of .*.

回避策 2: すべてのセクションをキャプチャして値を確認する

先読みは使用できませんが、パターンの 3 つの部分すべてをキャプチャして値を確認することはできます。最初のキャプチャ グループの値を使用して、キャプチャされた値を使用するか、一致しないことを報告するかを決定します:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    s := "anything/anything/somestring"
    r := regexp.MustCompile(`^[^/]+/[^/]+/(.*)`)
    val := r.FindStringSubmatch(s)

    if len(val) > 1 && val[1] != "somestring" {
        fmt.Println(val[1])
    } else {
        fmt.Println("No match")
    }
}
ログイン後にコピー

以上がGo Regex を使用するときに特定の文字列を除外するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート