为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
开满天机 2021-11-01 10:41:38
我使用 golangfunc (*Regexp) Match检查字符串是否与某个模式匹配。matched = regexp.Match(mystr, []byte(pattern))matched=true当传递 mystr 满足以下要求时,我如何编写模式以获得:至少包含一个“/”不以“alex/”、“merry/”、“david/”开头所以 mystr="publicfile", "alex/personalfile", "merry/personalfile", "david/personalfile" 将被拒绝,这意味着匹配=假。我怎样才能为此目的写一个模式?提前致谢。
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

这是我的方法:我颠倒要求并获得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


查看完整回答
反对 回复 2021-11-01
?
holdtom

TA贡献1805条经验 获得超10个赞

^(?:(?:alex|merry|david).*|(.*\/.*))$

你可以尝试这样的事情。这将匹配所有但你需要抓住groups唯一的。见演示。

https://regex101.com/r/fM9lY3/27


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信