我正在尝试使用基于用户输入的正则表达式模式,该模式保存在一个变量中。该变量将用于正则表达式搜索模式。
下面是city被硬编码为regex模式时可以正常工作的部分代码:
//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)
1条答案
按热度按时间z4iuyo4d1#
regexp.MustCompile
的输入是一个字符串,只需将变量与模式的其余部分连接起来即可;确保对用户输入(
regexp.QuoteMeta
)进行转义,以防止特殊字符被视为模式。