我使用 golang func (*Regexp) Match
来检查字符串是否与某些模式匹配。
matched = regexp.Match(mystr, []byte(pattern))
当传递满足以下要求的 mystr 时,如何编写模式以获得 matched=true
:
- 至少包含一个“/”
- 不要以“alex/”、“merry/”、“david/”开头
所以 mystr="publicfile", "alex/personalfile", "merry/personalfile", "david/personalfile"将被拒绝,这意味着 matched=false。
我如何为此目的编写一个模式?提前致谢。
最佳答案
这是我的方法:我颠倒要求并获得 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
参见 IDEONE demo
关于regex - 如何为要匹配的以下字符串编写正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31915595/