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