-4

我需要正则表达式从电话号码中检索没有双打、三连音、四连音等

以下是示例,数字是 1001055522 它应该返回我

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

3 回答 3

3

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

(\d)\1+

演示

好吧,剩下的就是检查字符串的长度并计数......我就交给你了。

于 2013-02-12T18:44:09.090 回答
1

要查找双打,请使用反向引用:

(.)\1

这是一个演示:http ://regex101.com/r/zC3fM1


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

(.)\1{2}

这是一个演示:http ://regex101.com/r/cJ4lJ8


如果你想匹配所有连续的数字,不管有多少,然后+在反向引用上使用:

(.)\1+

这是一个演示:http ://regex101.com/r/pL8sB3

于 2013-02-12T18:39:25.200 回答
0
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
于 2013-02-12T18:56:29.320 回答