ホームページ > バックエンド開発 > Golang > Go 正規表現で負の後読み機能を実現するにはどうすればよいですか?

Go 正規表現で負の後読み機能を実現するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-15 13:04:24
オリジナル
413 人が閲覧しました

How Can I Achieve Negative Lookbehind Functionality in Go Regular Expressions?

Go における後読みの否定: 解決策

Go では、パフォーマンス上の懸念により、否定的な後読みアサーションはサポートされていません。この課題を克服するには、同じ機能を実現する別の方法を検討できます。

元の正規表現は、@、#、または / 文字で始まらないコマンドを抽出することを目的としていました。ここには 2 つのオプションがあります:

1.否定文字セット:

否定後読みを削除し、否定文字セットに置き換えます。

\b[^@#/]\w.*
ログイン後にコピー

文字列の先頭で許可されている場合は、^

(?:^|[^@#\/])\b\w.*
ログイン後にコピー

2.フィルター関数:

特定の文字で始まる単語を削除するフィルター関数を実装します。

func Filter(vs []string, f func(string) bool) []string {
    vsf := make([]string, 0)
    for _, v := range vs {
        if f(v) {
            vsf = append(vsf, v)
        }
    }
    return vsf
}
ログイン後にコピー
入力テキストを処理するには、Process 関数でフィルター関数を使用します。

func Process(inp string) string {
    t := strings.Split(inp, " ")
    t = Filter(t, func(x string) bool {
        return strings.Index(x, "#") != 0 &&
            strings.Index(x, "@") != 0 &&
            strings.Index(x, "/") != 0
    })
    return strings.Join(t, " ")
}
ログイン後にコピー
これらのソリューションは、Go における否定後読みの代替手段を提供し、効率的な正規表現処理を保証します。

以上がGo 正規表現で負の後読み機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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