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的问题。