Maison >développement back-end >Golang >L'expression régulière Golang divise la chaîne en fonction de mots-clés

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

WBOY
WBOYavant
2024-02-10 15:15:08834parcourir

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

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)
}

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]

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)(.+)`)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer