ホームページ > バックエンド開発 > Golang > Go 正規表現で否定後読みアサーションをシミュレートするにはどうすればよいですか?

Go 正規表現で否定後読みアサーションをシミュレートするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-01 00:35:12
オリジナル
372 人が閲覧しました

How Can I Simulate Negative Lookbehind Assertions in Go Regular Expressions?

Go での否定後読みのシミュレーション

否定後読みアサーションを特徴とする元の正規表現は、先頭に @、#、を付けずにコマンドを抽出することを目的としています。または / 文字。ただし、Go は負の後読みをサポートしていないため、このパターンを実装する際にハードルが生じます。

正規表現の書き換え

負の後読みなしで同じ機能を実現するには、次のように置き換えることができます。文字セット内で除外される文字:

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

コマンドがこれらの文字で始まることが許可されていない場合、 ^ アンカーを使用してこの条件を強制できます:

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

Go 関数を使用した代替アプローチ

代わりに、Go 関数を使用して入力文字列をフィルタリングおよび処理することを検討してください。

func Filter(vs []string, f func(string) bool) []string { ... }

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 プレイグラウンド (http://play.golang.org/p/ntJRNxJTxo) で見つけることができます。

以上がGo 正規表現で否定後読みアサーションをシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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