我找不到正确的Regex代码来匹配这个:
tttttg 必须是真的tg 必须是真的tgg 一定是假的tttgg 一定是假的t 必须是真的ttt 必须是真的g 一定是假的gggg 一定是假的可以有任意数量的出现,t但至少有一次,并且可以选择只g在结尾处有一个。我试过,Match match = Regex.Match("ttgg", @"[t]+{g}|[t]+");但它返回真,它必须返回假,因为有 2 个,g而且只能有一个。
问题是,给定输入字符串"ttgg",您的模式将很高兴地匹配子字符串 "ttg"。尝试在您的模式周围放置开始 ( ^) 和结束 ( $) 锚点以禁止额外的前导或尾随字符。除此之外,您可以显着简化您的模式:
Match match = Regex.Match("ttgg", @"^t+g?$")
Run Code Online (Sandbox Code Playgroud)
这将匹配:
^)t字符g字符