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 サイトの他の関連記事を参照してください。