标签: c# regex
所以我试图检查一个字符串是否遵循这样的模式:abbccc,其中每个字母出现的次数与其设置的位置相同。所以我考虑用这种模式分割字符串:(?<=(\w))(?=\w)(?!\1)并从那里继续。问题是,特别是对于上面的字符串(但对于其他字符串),我得到5个字符串Regex.Split:a, a, bb, b, ccc,而不是a, bb, ccc,我的期望。我认为正则表达式存在问题,但Regex.Replace工作正常,返回a_bb_ccc。可能是什么问题?
abbccc
(?<=(\w))(?=\w)(?!\1)
Regex.Split
a, a, bb, b, ccc
a, bb, ccc
Regex.Replace
a_bb_ccc
答案 0 :(得分:2)
您可以使用:
(.)\1*
你得到3场比赛a,bb,ccc
Demo
示例来源(run here)
string pattern = @"(.)\1*"; string input = @"abbccc"; foreach (Match m in Regex.Matches(input, pattern)) Console.WriteLine(m.Value);