一个目录下有很多 .log
的文件
xx.log
xx.2022-04-01.log
xx.1.log
需要排除 .1.log
这样的文件。
由于 go 不支持 Negative look-ahead 。不能用 (?!
func TestRegex2(t *testing.T) {
r, err := regexp.Compile(`.*([^.]\D)\.log$`)
if err != nil {
t.Fatal(err)
}
cases := []struct {
dest string
match bool
}{
{"/afafa/a.log", true},
{"/afafa/a_err.log", true},
{"/afafa/a_.log", true},
{"/afafa/a_3.log", true}, // 报错
{"/afafa/a_3.abc.log", true},
{"/afafa/a.1.log", false},
{"/afafa/a.2022.log", true}, // 报错
{"/afafa/a.2022-4-1.log", true}, // 报错
}
for i := range cases {
t.Run(cases[i].dest, func(t *testing.T) {
if r.MatchString(cases[i].dest) != cases[i].match {
t.Errorf("match not correct")
}
})
}
}
求告知正确的写法。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.