为了账号安全,请及时绑定邮箱和手机立即绑定

查找给定文本中的所有选定单词

查找给定文本中的所有选定单词

Go
幕布斯7119047 2022-07-25 11:01:38
我有下面的代码,我希望用户输入一些关键词,然后从这些词中找到给定字符串中存在的内容,但结果matches切片是一个长度等于要检查的文本的空切片 游乐场package mainimport (    "fmt"    "regexp")func main() {    p := []string{}    p = append(p, "engineer")    p = append(p, "doctor")    var skills string    for _, z := range p {        skills += `|` + z    }    fmt.Println(skills)    re := regexp.MustCompile(`(?i)` + skills)    matches := re.FindAllString("I'm an engineer not a doctor", -1)    fmt.Println(matches)    for i, j := range matches {        fmt.Println(i, j)    }}
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

感谢提供的评论,我得到的是:


package main


import (

    "fmt"

    "regexp"

    "strings"

)


func main() {

    p := []string{}

    p = append(p, "engineer")

    p = append(p, "doctor")

    p = append(p, "chemical (permit)")

    skills := strings.Join(p, "|")

    

    fmt.Println(skills)

    re := regexp.MustCompile(`(?i)` + skills)


    matches := re.FindAllString("I'm an engineer not a doctor who is getting chemical permits", -1)

    fmt.Println(matches, len(matches))

    for i, j := range matches {

        fmt.Println(i, j)

    }

}

输出是:


engineer|doctor|chemical (permit)

[engineer doctor chemical permit] 3

0 engineer

1 doctor

2 chemical permit


查看完整回答
反对 回复 2022-07-25
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信