如何为要匹配的以下字符串编写正则表达式模式

我使用 golangfunc (*Regexp) Match检查字符串是否与某个模式匹配。

matched = regexp.Match(mystr, []byte(pattern))

matched=true当传递 mystr 满足以下要求时,我如何编写模式以获得:

  • 至少包含一个“/”

  • 不以“alex/”、“merry/”、“david/”开头

所以 mystr="publicfile", "alex/personalfile", "merry/personalfile", "david/personalfile" 将被拒绝,这意味着匹配=假。

我怎样才能为此目的写一个模式?提前致谢。


开满天机
浏览 166回答 2
2回答

慕的地8271018

这是我的方法:我颠倒要求并获得false或true:^(alex|merry|david)|^[^/]+$正则表达式将匹配所有以 开头的字符串alex,merry或david所有不包含 的字符串/,并使用!运算符反转Match结果:var mystr = "alex/personalfile"var pattern = regexp.MustCompile(`^(alex|merry|david)|^[^/]+$`) var matched = !pattern.Match([]byte(mystr))fmt.Println(matched)结果: false

holdtom

^(?:(?:alex|merry|david).*|(.*\/.*))$你可以尝试这样的事情。这将匹配所有但你需要抓住groups唯一的。见演示。https://regex101.com/r/fM9lY3/27
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go