【发布时间】:2020-09-20 10:36:56
【问题描述】:
这将跳过前 2 个字符并从左到右开始匹配
re := regexp.MustCompile("(^.{2})(\\/path\\/subpath((\\/.*)|()))")
fmt.Println(re.MatchString("c:/path/subpath/path/subpath/")) // true
fmt.Println(re.MatchString("c:/patch/subpath/path/subpath/")) // false
注意第二个没有命中。即使 /path/subpath 存在于字符串中。这是完美的。
现在如果不知道要跳过多少个字符并想从第一个“/”开始搜索,那么我尝试了这个
re2 := regexp.MustCompile("([^\\/])(\\/path\\/subpath((\\/.*)|()))")
fmt.Println(re2.MatchString("cddddd:/path/subpath/path/subpath")) // true
这是完美的。但如果我改变第一条路径 fmt.Println(re2.MatchString("cddddd:/patch/subpath/path/subpath")) // 这也是正确的
我不希望最后一个匹配第二个 /path/subpath。我希望能够在第一组中搜索,从那里开始第二组并进行从左到右的匹配。
任何帮助将不胜感激。
【问题讨论】: