Go使用RE2正则表达式引擎,它不支持前瞻、后瞻和其他 PCRE 好东西,如\K请参阅不同正则表达式引擎的比较。但是,您可以使用此正则表达式:[^_-]+-[^.]+请参阅此演示。解释:[^_-]+ # a character that is not "_" or "-", one or more times- # a literal "-"[^.]+ # a character that is not a dot, one or more times
只需用一句话重新发布@mkopriva 的片段之一,并非所有事情都需要使用正则表达式来完成: s := "abcd_1.263.0.15-8zz00df.yml" if i := strings.IndexByte(s, '_'); i > -1 { s = s[i+1:] } if i := strings.LastIndexByte(s, '.'); i > -1 { s = s[:i] } fmt.Println(s)