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

标签 regex go

我使用 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。

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

最佳答案

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

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

正则表达式将匹配所有以 alex 开头的字符串, merrydavid或所有不包含 / 的字符串, 和 !运算符我们反转 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/

相关文章:

java - 如何使用正则表达式模式检查字符串中每 12 个字符应该是 , ?

java - 操纵 IP 地址 - 在 '.' 字符处拆分字符串

java - Java 中的 Project Euler #22(关闭 7 364 934)

regex - 为什么 "ab(cd|c)*d"完全匹配 "abcdcdd"但 "ab(c|cd)*d"不匹配?尽管他们彼此相似

javascript - 给定相同的输入字符串,为什么这些 base64 编码输出不同?

oracle - 无法使用Oracle db在Golang中构建应用

Java 匹配字符串格式

python - Go 真的能比 Python 快那么多吗?

go - golang tar。读取截断数据

go - 使用公共(public) channel 聚合来自多个 goroutine 的结果