Skip to main content
 首页 » 编程设计

c#之一串重复字符的正则表达式,最后还有另一个可选字符

2024年02月01日28wayfarer

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

  • ttttg 必须为真
  • tg 必须为真
  • tgg 必须为 false
  • tttgg 必须为 false
  • t 必须为真
  • ttt 必须为真
  • g 必须为 false
  • gggg 必须为 false

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

请您参考如下方法:

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

Match match = Regex.Match("ttgg", @"^t+g?$") 

这将匹配:

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