C# 与Regex.Split有关的问题
因此,我试图检查字符串是否遵循如下模式:C# 与Regex.Split有关的问题,c#,regex,C#,Regex,因此,我试图检查字符串是否遵循如下模式:abbcc,即每个字母出现的次数与其设置位置指示的次数相同。因此,我考虑使用以下模式拆分字符串:(?您可以使用该模式: (.)\1* 你得到3个匹配a,bb,ccc 样本源() 使用Regex.Split(有一个捕获组,捕获的值也成为结果数组的一部分)将其过度复杂化。使用Regex.Matches(s,@“(\w)\1*”).Cast()。选择(x=>x.value)。ToList()如果replace起作用,你不能先替换然后拆分离子吗?@EpicKi
abbcc
,即每个字母出现的次数与其设置位置指示的次数相同。因此,我考虑使用以下模式拆分字符串:(?您可以使用该模式:
(.)\1*
你得到3个匹配a,bb,ccc
样本源()
使用Regex.Split
(有一个捕获组,捕获的值也成为结果数组的一部分)将其过度复杂化。使用Regex.Matches(s,@“(\w)\1*”).Cast()。选择(x=>x.value)。ToList()
如果replace起作用,你不能先替换然后拆分离子吗?@EpicKip当然,但这不是我的问题。请明确你感兴趣的是什么,一个解决方案,一个解释为什么你在输出数组中得到更多值,或者两者都有?abb--ccc33
的预期结果是什么?实际上,@EpicKip的想法可能是最好的在这种情况下,只需选择一个不常用的符号,如\u200C
(ZWNJ)来替换,然后拆分。
string pattern = @"(.)\1*";
string input = @"abbccc";
foreach (Match m in Regex.Matches(input, pattern))
Console.WriteLine(m.Value);