登录
首页 >  Golang >  Go问答

有没有办法在正则表达式中插入变量?

来源:stackoverflow

时间:2024-04-10 11:48:36 269浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《有没有办法在正则表达式中插入变量?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我正在尝试使用基于保存在变量中的用户输入的正则表达式模式。然后该变量将在正则表达式搜索模式中使用。

如果城市被硬编码为正则表达式模式,以下是有效的代码部分:

//city.txt has the following input information:

    //boston 100 aa bb
    //chicago 200 cc dd


    //get user input

    fmt.print("enter city: ")
    scanner.scan()
    city:= scanner.text()

    //read file from text and convert to string

    citylist, _ := ioutil.readfile("city.txt")
    convertcitytostring:= string(citylist)

    //use regexp to search the citylist(str)

    search1:= regexp.mustcompile(`boston\s\s.*`)
    search2:= search1.findstring(convertcitytostring)

    //convert results to []string

    search3:= strings.fields(search2)

    //print

    fmt.printf("%v %t", search3, search3)
    fmt.printf("\n")

    //output:
    //[boston 100 aa bb] []string

我想做的是使用变量“city”而不是硬编码模式:

search1:= regexp.MustCompile(`city\s\S.*`)
    search2:= search1.FindString(convertSitestoString)

解决方案


regexp.mustcompile 的输入是一个字符串。只需将变量与模式的其余部分连接起来即可;

city := "Boston"
search1:= regexp.MustCompile(regexp.QuoteMeta(city) + `\s\S.*`)

确保转义用户输入 (regexp.quotemeta) 以防止特殊字符被评估为模式。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《有没有办法在正则表达式中插入变量?》文章吧,也可关注golang学习网公众号了解相关技术文章。

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