首頁 >後端開發 >Golang >golang正規表示式根據關鍵字分割字串

golang正規表示式根據關鍵字分割字串

WBOY
WBOY轉載
2024-02-10 15:15:08834瀏覽

golang正規表示式根據關鍵字分割字串

php小編蘋果為您介紹一種強大的字串處理技巧 - golang正規表示式根據關鍵字分割字串。在開發中,我們經常需要根據某個關鍵字對字串進行分割,以便進一步處理資料。透過使用golang的正規表示式,我們可以方便地實現這個功能,提高開發效率。本文將為您詳細介紹golang正規表示式的使用方法,以及如何根據關鍵字分割字串,幫助您在日常開發中更靈活地處理字串。讓我們一起來探索吧!

問題內容

這是我的字串,如findstudentbyid 現在,我將根據find 單字之前的find 單字之前和by by id 之後的關鍵字進行拆分。

所以golang正規表示式模式是 `(?i)(^find{1})(\w )(by{1})(\w )`

我正在嘗試拆分此關鍵字 findstudentbyid 但我遇到問題,無法找到我所找到的確切結果。 我的預期輸出是 [透過 id 找出學生]

find
student
by
id

但我無法做到這一點。我確實嘗試過這個 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)
}

解決方法

我不認為 Regexp.Split() 是適合您情況的解決方案,根據到文件

我想你需要的是找到子匹配(如 findstudentbyid ):

所以你可以這樣使用 Regexp.FindStringSubmatch()

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

result: [findstudentbyid find student by id]

我還認為您可以簡化正則表達式,但不要忘記將其放入括號中來處理子匹配,就像註釋中指出的那樣:

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

以上是golang正規表示式根據關鍵字分割字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除