首先得到一个regexp, 使用Compile(), (MustCompile()如果字符串不符合正则会panic)
再调用其它函数, 常用的有
- 检测是否匹配 Match() bool
- 检测是否存在, 并返回匹配的字符串 Find(), FindAll(), 每一种都有String类型的相应函数, FindString(), FindAllString()
- 检测子匹配, FindStringSubMatch(), FindAllStringSubMatch()...
- 查找并替换, ReplaceAllString()
- 分隔成数组, Split(), (strings包有个strings.Split(""), 这里用正则更强大)
func main() { str := "abcdefgabc" reg, _ := regexp.Compile("abc.*?") fmt.Println(reg.MatchString(str)) // 是否匹配 // true fmt.Println(reg.FindString(str)) // 查找匹配的字符串 // abc fmt.Println(reg.FindAllString(str, -1)) // 查找匹配的字符串 // [abc abc] str3 := reg.ReplaceAllString(str, "--") // 查找所有的, 并替换成 fmt.Println(str3) //--defg--
// 子查询 str2 := "http://leanote.com, https://leanote.com/you" reg2, _ := regexp.Compile("(http|https)://(leanote.*?)") fmt.Println(reg2.FindStringSubmatch(str2)) // 只匹配一次 // [http://leanote.com http leanote.com], [0]是全部的, [1]是第1个子, fmt.Println(reg2.FindAllStringSubmatch(str2, -1)) // 查找所有的 // [[http://leanote http leanote] [https://leanote https leanote]] }