Rumah >pembangunan bahagian belakang >Golang >Ungkapan biasa Golang membahagi rentetan berdasarkan kata kunci

Ungkapan biasa Golang membahagi rentetan berdasarkan kata kunci

WBOY
WBOYke hadapan
2024-02-10 15:15:08834semak imbas

Ungkapan biasa Golang membahagi rentetan berdasarkan kata kunci

Editor PHP Apple memperkenalkan anda teknik pemprosesan rentetan yang hebat - ungkapan biasa golang untuk memisahkan rentetan berdasarkan kata kunci. Dalam pembangunan, kita sering perlu memisahkan rentetan mengikut kata kunci tertentu untuk memproses data selanjutnya. Dengan menggunakan ungkapan biasa golang, kami boleh melaksanakan fungsi ini dengan mudah dan meningkatkan kecekapan pembangunan. Artikel ini akan memperkenalkan anda secara terperinci cara menggunakan ungkapan biasa golang dan cara membelah rentetan mengikut kata kunci, membantu anda memproses rentetan dengan lebih fleksibel dalam pembangunan harian. Mari kita meneroka bersama-sama!

Kandungan soalan

Ini rentetan saya, dipecah mengikut kata kunci selepas findstudentbyid 现在,我将根据 find 单词之前的 find 单词之前和 by by id.

Jadi corak ekspresi biasa golang ialah `(?i)(^find{1})(w+)(by{1})(w+)`

Saya cuba membahagikan kata kunci ini findstudentbyid tetapi saya menghadapi masalah mencari keputusan tepat yang saya temui. Output jangkaan saya ialah [通过 id 查找学生] atau

find
student
by
id

Tetapi saya tidak boleh melakukannya. Saya dah cuba kod golang ni

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

Penyelesaian

Saya tidak fikir Regexp.Split() adalah penyelesaian yang tepat untuk situasi anda, mengikut dokumentasi:

Saya rasa apa yang anda perlukan ialah mencari subpadanan (seperti findstudentbyid ):

Jadi anda boleh menggunakan Regexp.FindStringSubmatch() seperti ini:

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

result: [findstudentbyid find student by id]

Saya juga fikir anda boleh memudahkan regex, tetapi jangan lupa meletakkannya dalam kurungan untuk mengendalikan subpadanan, seperti yang ditunjukkan dalam ulasan:

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

Atas ialah kandungan terperinci Ungkapan biasa Golang membahagi rentetan berdasarkan kata kunci. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam