我找不到Regex
与此匹配的正确代码:
tttttg
必须是真的tg
必须是真的tgg
一定是假的tttgg
一定是假的t
必须是真的ttt
必须是真的g
一定是假的gggg
一定是假的
可以有任意数量的出现,t
但至少有一个,并且可以选择g
在结尾只出现 a。我试过Match match = Regex.Match("ttgg", @"[t]+{g}|[t]+");
了,但它返回 true,它必须返回 false,因为有 2 个g
并且只能有一个。
问题是,给定输入字符串 ,"ttgg"
您的模式将愉快地匹配子字符串 "ttg"
。尝试在您的模式周围放置 start ( ^
) 和 end ( $
) 锚,以禁止额外的前导或尾随字符。除此之外,您可以显着简化您的模式:
Match match = Regex.Match("ttgg", @"^t+g?$")
这将匹配:
^
)t
字符g
字符要使用的正则表达式是:"\bt\b|t+g\b|\bt+\b"
\bt\b
匹配唯一的 t - 单词边界,'t',单词边界。
t+g\b
匹配余数 - 一个或多个 't' 和一个和一个只有 g。
我假设您的目标不一定从行首开始。