我使用 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
holdtom
TA贡献1805条经验 获得超10个赞
^(?:(?:alex|merry|david).*|(.*\/.*))$
你可以尝试这样的事情。这将匹配所有但你需要抓住groups
唯一的。见演示。
https://regex101.com/r/fM9lY3/27
- 2 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消