C# 使用正则表达式成对重复字符?

C# 使用正则表达式成对重复字符?,c#,regex,C#,Regex,我有一个数字列表,使用的正则表达式如下所示(\d)(?=\d*\1) 编号示例列表: 1234 5678 5565 5566 5567 5656 1212 使用表达式的当前输出: 5565 5566 5567 5656 1212 但是,我想提取4个数字中2对数字的列表,无论排列如何。例如:112212122112212112 期望输出示例:(其中5565、5567为假) 5566 5656 1212 我不熟悉regex,需要一些帮助。而不是regex,如果你想要普通的C 代码,这就可以了 int

我有一个数字列表,使用的正则表达式如下所示
(\d)(?=\d*\1)


编号示例列表:

1234
5678
5565
5566
5567
5656
1212

使用表达式的当前输出:

5565
5566
5567
5656
1212

但是,我想提取4个数字中2对数字的列表,无论排列如何。例如:112212122112212112

期望输出示例:(其中5565、5567为假)

5566
5656
1212


我不熟悉regex,需要一些帮助。

而不是
regex
,如果你想要普通的
C 
代码,这就可以了

int number = 1212;
var isDoublePair = number.ToString()
                    .ToCharArray()
                    .GroupBy(c => c)
                    .Select(grp => grp.Count())
                    .All(count => count == 2);
正如w.b.所评论的,这可以缩短为

var isDoublePair = number.ToString()
                     .GroupBy(c => c)
                     .All(g => g.Count() == 2);

如果你的数字总是4位数,你可以这样做

(?:(\d)(\d)\1\2)|(?:(\d)\3(\d)\4)|(?:(\d)(\d)\6\5)
所以,如果你有四个数字,那么每个数字只能有两个不同的数字。使用
\1
可以引用第一个数字,使用
\2
第二个数字,等等。此正则表达式匹配三种可能的分布:
abab
abba
aabb


示例:

您不需要
tocharray
在这里选择
,它可以是
number.ToString().GroupBy(c=>c)。All(g=>g.Count()==2)
谢谢,这项工作也可以。angela也提供下面的正则表达式解决方案。@erkeni是的。您可以根据需要直接使用Angela的正则表达式。这很好:)解决了OP的问题。