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

时间:2015-08-10 09:06:42

标签: regex go

我使用golang func (*Regexp) Match检查字符串是否与某些模式匹配。

matched = regexp.Match(mystr, []byte(pattern))

当传递mystr满足以下要求时,如何编写模式以获取matched=true

  • 至少包含一个" /"
  • 不是以" alex /"," merry /"," david /"
  • 开头

so mystr =" publicfile"," alex / personalfile"," merry / personalfile"," david / personalfile"将被拒绝,这意味着匹配=假。

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

2 个答案:

答案 0 :(得分:1)

以下是我的方法:我反转要求并获得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

答案 1 :(得分:0)

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

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

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