我使用golang func (*Regexp) Match检查字符串是否与某些模式匹配。
matched = regexp.Match(mystr, []byte(pattern))
通过mystr满足以下要求时,如何编写模式以获取matched=true:

  • 至少包含一个“/”
  • 不能以“alex /”,“merry /”,“david /”开头

    因此mystr =“publicfile”,“alex / personalfile”,“merry / personalfile”,“david / personalfile”将被拒绝,这意味着match = false。

    我如何为此目的写一个模式?提前致谢。

    最佳答案

    这是我的方法:我颠倒要求并获得falsetrue:

    ^(alex|merry|david)|^[^/]+$
    

    正则表达式将匹配以alexmerrydavid开头的所有字符串,或者所有不包含/的字符串,并使用!运算符反转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/

  • 10-12 12:23