Maison > développement back-end > Golang > le corps du texte

L'expression régulière Golang divise la chaîne en fonction de mots-clés

WBOY
Libérer: 2024-02-10 15:15:08
avant
796 Les gens l'ont consulté

Lexpression régulière Golang divise la chaîne en fonction de mots-clés

Éditeur PHP Apple vous présente une puissante technique de traitement de chaînes : l'expression régulière golang pour diviser les chaînes en fonction de mots-clés. En développement, nous devons souvent diviser la chaîne en fonction d'un certain mot-clé afin de poursuivre le traitement des données. En utilisant les expressions régulières de Golang, nous pouvons facilement implémenter cette fonction et améliorer l'efficacité du développement. Cet article vous présentera en détail comment utiliser les expressions régulières Golang et comment diviser les chaînes en fonction de mots-clés, vous aidant ainsi à traiter les chaînes de manière plus flexible dans le développement quotidien. Explorons ensemble !

Contenu de la question

Voici ma chaîne, divisée par mots-clés après findstudentbyid 现在,我将根据 find 单词之前的 find 单词之前和 by by id.

Donc, le modèle d'expression régulière de Golang est `(?i)(^find{1})(w+)(by{1})(w+)`

J'essaie de diviser ce mot-clé findstudentbyid mais j'ai du mal à trouver les résultats exacts que je trouve. Mon résultat attendu est [通过 id 查找学生] ou

find
student
by
id
Copier après la connexion

Mais je ne peux pas le faire. J'ai essayé ce code golang

package main

import (
    "fmt"
    "regexp"
)

func main() {

    txt := "findstudentbyid"
    re := regexp.MustCompile(`(?i)(^find{1})(\w+)(by{1})(\w+)`)
    split := re.Split(txt, -1)
    set := []string{}
    for i := range split {
        set = append(set, split[i])
    }

    fmt.Println(set)
}
Copier après la connexion

Solution de contournement

Je ne pense pas que Regexp.Split() soit la bonne solution pour votre situation, selon la documentation :

Je pense que ce dont vous avez besoin est de trouver le sous-match (comme findstudentbyid) :

Vous pouvez donc utiliser Regexp.FindStringSubmatch() comme ceci :

fmt.Println("result: ", re.FindStringSubmatch(txt))

result: [findstudentbyid find student by id]
Copier après la connexion

Je pense aussi que vous pouvez simplifier l'expression régulière, mais n'oubliez pas de la mettre entre parenthèses pour gérer les sous-correspondances, comme indiqué dans les commentaires :

re := regexp.MustCompile(`(find)(.+)(by)(.+)`)
Copier après la connexion

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:stackoverflow.com
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!