Heim  >  Artikel  >  Backend-Entwicklung  >  Der reguläre Golang-Ausdruck teilt die Zeichenfolge basierend auf Schlüsselwörtern auf

Der reguläre Golang-Ausdruck teilt die Zeichenfolge basierend auf Schlüsselwörtern auf

WBOY
WBOYnach vorne
2024-02-10 15:15:08797Durchsuche

Der reguläre Golang-Ausdruck teilt die Zeichenfolge basierend auf Schlüsselwörtern auf

PHP-Editor Apple stellt Ihnen eine leistungsstarke Technik zur Zeichenfolgenverarbeitung vor – den regulären Golang-Ausdruck zum Aufteilen von Zeichenfolgen basierend auf Schlüsselwörtern. In der Entwicklung müssen wir die Zeichenfolge häufig nach einem bestimmten Schlüsselwort aufteilen, um die Daten weiter zu verarbeiten. Durch die Verwendung der regulären Ausdrücke von Golang können wir diese Funktion einfach implementieren und die Entwicklungseffizienz verbessern. In diesem Artikel erfahren Sie ausführlich, wie Sie reguläre Golang-Ausdrücke verwenden und Zeichenfolgen nach Schlüsselwörtern aufteilen, um Ihnen dabei zu helfen, Zeichenfolgen in der täglichen Entwicklung flexibler zu verarbeiten. Lasst uns gemeinsam erkunden!

Frageninhalt

Dies ist meine Zeichenfolge, aufgeteilt nach Schlüsselwörtern nach findstudentbyid 现在,我将根据 find 单词之前的 find 单词之前和 by by id.

Das Golang-Muster für reguläre Ausdrücke ist also `(?i)(^find{1})(w+)(by{1})(w+)`

Ich versuche, dieses Schlüsselwort aufzuteilen findstudentbyid, aber es fällt mir schwer, genau die Ergebnisse zu finden, die ich finde. Meine erwartete Ausgabe ist [通过 id 查找学生] oder

find
student
by
id

Aber ich kann es nicht. Ich habe diesen Golang-Code ausprobiert

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

Workaround

Ich glaube nicht, dass Regexp.Split() die richtige Lösung für Ihre Situation ist, laut Dokumentation:

Ich denke, was Sie brauchen, ist, die Unterübereinstimmung zu finden (wie findstudentbyid):

Du kannst Regexp.FindStringSubmatch() also so verwenden:

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

result: [findstudentbyid find student by id]

Ich denke auch, dass Sie den regulären Ausdruck vereinfachen können, aber vergessen Sie nicht, ihn in Klammern zu setzen, um Unterübereinstimmungen zu behandeln, wie in den Kommentaren erwähnt:

re := regexp.MustCompile(`(find)(.+)(by)(.+)`)

Das obige ist der detaillierte Inhalt vonDer reguläre Golang-Ausdruck teilt die Zeichenfolge basierend auf Schlüsselwörtern auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen