Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于检查双精度、三精度等的正则表达式_C#_Regex - Fatal编程技术网

C# 用于检查双精度、三精度等的正则表达式

C# 用于检查双精度、三精度等的正则表达式,c#,regex,C#,Regex,我需要正则表达式从电话号码中检索双倍、三倍、四倍等 以下为例,, 电话号码是1001055522 它应该会回报我 group Numbers ============================= Doubles 00 22 Triplets 555 要查找Double,请使用反向引用: (.)\1 (.)\1{2} (.)\1+ 下面是一个演示: 要查找三元组,只需重复反向引

我需要正则表达式从电话号码中检索双倍、三倍、四倍等

以下为例,, 电话号码是1001055522 它应该会回报我

group              Numbers
=============================
Doubles            00
                   22 
Triplets           555

要查找Double,请使用反向引用:

(.)\1
(.)\1{2}
(.)\1+
下面是一个演示:

要查找三元组,只需重复反向引用:

(.)\1
(.)\1{2}
(.)\1+
下面是一个演示:

如果要匹配所有连续的数字,而不管有多少个,则在反向引用中使用+:

(.)\1
(.)\1{2}
(.)\1+
这里有一个演示:

当与正则表达式一起使用时,此正则表达式将产生精确的双精度或三精度,而不是较长连续序列的一部分。这是由于量词的贪婪

(\d)\1+

那么,剩下的就是检查字符串的长度并计数。。。我将把它留给你。

只需使用循环并计数@O.R.Mapper你的意思是你有一个明显的正则表达式答案吗?我不知道。OP,当你在寻找一个神奇的正则表达式和几行简单的无聊代码之间做出选择时,如果第一行看起来不够简单,你可能会选择第二个解决方案。我认为在这种情况下,循环答案更有效,无论是在代码清晰度和速度方面。双倍是三倍的一部分怎么样?@nhahdh-是的。这个匹配1,\1{2}再匹配2个。不,我的意思是您的正则表达式将在中匹配55个555@nhahtdh-OP从未说过这是个问题。他在问题中清楚地表明,他希望00和22是两倍,555是三倍。不,这不是解决方案,在这种情况下,结果应该是2倍和1倍
Dim n = "1001055522"

Dim doubles = System.Text.RegularExpressions.Regex.Matches(n, "(.)\1")
Dim triples = System.Text.RegularExpressions.Regex.Matches(n, "(.)\1{2}")

'Doubles
For Each d As System.Text.RegularExpressions.Match In doubles
    Console.WriteLine(d.Value)
Next

'Triples
For Each t As System.Text.RegularExpressions.Match In triples
    Console.WriteLine(t.Value)
Next