登录
首页 >  Golang >  Go问答

使用golang的正则表达式按关键字分割字符串

来源:stackoverflow

时间:2024-02-08 14:43:37 238浏览 收藏

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的正则表达式按关键字分割字符串》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>