Maison > développement back-end > Golang > Comment puis-je émuler des lookbehinds négatifs dans les expressions régulières Go ?

Comment puis-je émuler des lookbehinds négatifs dans les expressions régulières Go ?

DDD
Libérer: 2024-11-28 20:49:11
original
442 Les gens l'ont consulté

How Can I Emulate Negative Lookbehinds in Go Regular Expressions?

Émulation des lookbehinds négatifs dans Go

Bien que Go ne prenne pas en charge nativement les lookbehinds négatifs dans les expressions régulières pour des raisons de performances, une stratégie alternative peut être utilisée pour obtenir des fonctionnalités similaires.

Considérez l'expression régulière originale :

\b(?<![@#\/])\w.*
Copier après la connexion

Depuis le le lookbehind nié examine uniquement un jeu de caractères, il peut être remplacé par un jeu de caractères nié lui-même :

\b[^@#/]\w.*
Copier après la connexion

Si des caractères peuvent apparaître au début de la chaîne, ajoutez l'ancre ^ :

(?:^|[^@#\/])\b\w.*
Copier après la connexion

Pour une approche plus fine, une fonction de filtre peut être implémentée :

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
}
Copier après la connexion

Cette fonction de filtre peut ensuite être employée dans un Processus function :

func Process(inp string) string {
    t := strings.Split(inp, " ")
    t = Filter(t, func(x string) bool {
        return strings.Index(x, "#") != 0 &amp;&amp;
            strings.Index(x, "@") != 0 &amp;&amp;
            strings.Index(x, "/") != 0
    })
    return strings.Join(t, " ")
}
Copier après la connexion

Dans l'ensemble, ces techniques permettent l'émulation de lookbehinds négatifs dans Go, fournissant ainsi une solution de contournement au manque de prise en charge linguistique directe pour cette fonctionnalité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal