我可以使用下面的代码来搜索文本是否str包含任何一个或两个,即如果keys它包含“MS” or“动态”or这两个
package main
import (
"fmt"
"regexp"
)
func main() {
keys := []string{"MS", "dynamics"}
keysReg := fmt.Sprintf("(%s %s)|%s|%s", keys[0], keys[1], keys[0], keys[1]) // => "(MS dynamics)|MS|dynamics"
fmt.Println(keysReg)
str := "What is MS dynamics, is it a product from MS?"
re := regexp.MustCompile(`(?i)` + keysReg)
matches := re.FindAllString(str, -1)
fmt.Println("We found", len(matches), "matches, that are:", matches)
}
我希望用户输入他的短语,所以我删除不需要的单词和字符,然后按照上面的方式进行搜索。假设用户输入是:This,is,a,delimited,string我需要keys动态构建变量(delimited string)|delimited|string以便我可以搜索str所有匹配项的变量,所以我写了以下内容:
s := "This,is,a,delimited,string"
t := regexp.MustCompile(`(?i),|\.|this|is|a`) // backticks are used here to contain the expression, (?i) for case insensetive
v := t.Split(s, -1)
fmt.Println(len(v))
fmt.Println(v)
但我得到的输出是:
8
[ delimited string]
我清理输入文本的错误部分是什么,我希望输出是:
2
[delimited string]
这里是我的游乐场
白衣染霜花
莫回无
随时随地看视频慕课网APP
相关分类