正则表达式用于一串重复字符和另一个可选字符的末尾

Coc*_*dan 1 c# regex

我找不到正确的Regex代码来匹配这个:

  • tttttg 必须是真的
  • tg 必须是真的
  • tgg 一定是假的
  • tttgg 一定是假的
  • t 必须是真的
  • ttt 必须是真的
  • g 一定是假的
  • gggg 一定是假的

可以有任意数量的出现,t但至少有一次,并且可以选择只g在结尾处有一个。我试过,Match match = Regex.Match("ttgg", @"[t]+{g}|[t]+");但它返回真,它必须返回假,因为有 2 个,g而且只能有一个。

p.s*_*w.g 5

问题是,给定输入字符串"ttgg",您的模式将很高兴地匹配子字符串 "ttg"。尝试在您的模式周围放置开始 ( ^) 和结束 ( $) 锚点以禁止额外的前导或尾随字符。除此之外,您可以显着简化您的模式:

Match match = Regex.Match("ttgg", @"^t+g?$")
Run Code Online (Sandbox Code Playgroud)

这将匹配:

  • 字符串的开头 ( ^)
  • 一个或多个t字符
  • 可选g字符
  • 字符串的结尾