使用RegEx计算三胞胎数量

时间:2016-01-17 12:45:43

标签: regex match

使用RegEx如何计算字符串中的三次重复?

示例122244445577777

1 222 444 4 55 777 77

回答3

3 个答案:

答案 0 :(得分:1)

由于未提及语言/工具,我将添加某些语言的答案。但是,相同的RegEx可以在任何语言中使用,只需很少或不需要修改。

([0-9])\1\1

此处,([0-9])将匹配一个数字并将其放入第一个捕获的组中,以后可以使用反向引用\1进行访问。

同样的RegEx也可以写成

(\d)\1{2}

如果您想将此字符用于任何字符而不仅仅是数字,您可以使用以下RegEx。

(.)\1\1

RegEx Live Demo on RegEx101

<强>的Python:

>>> s = '122244445577777'
>>> import re
>>> re.findall(r'(.)\1{2}', s)
['2', '4', '7']
>>> re.findall(r'((.)\2{2})', s)
[('222', '2'), ('444', '4'), ('777', '7')]
>>> len(re.findall(r'(.)\1{2}', s))
3
>>> len(re.findall(r'(\d)\1{2}', s))
3

<强> JavaScript的:

&#13;
&#13;
var input = "122244445577777";
var regex = /([0-9])\1{2}/g;

var tripletCount = (input.match(regex) || []).length;
document.write(tripletCount);
&#13;
&#13;
&#13;

<强> PHP:

echo preg_match_all('/([0-9])\1{2}/', "122244445577777", $matches);

答案 1 :(得分:0)

在我所知道的所有语言中,只有一个正则表达式无法做到这一点,你需要使用一些语言的功能。

然而,实际答案应该非常简短且不复杂。如果您使用我们使用的语言,我们可以提供实际答案。

在大多数语言中,如果没有正则表达式,这样做可能更简单,因为你需要得到一个随机字母/数字的计数而不是特定的。

答案 2 :(得分:0)

经过一番挫折之后,我到了这里......

/ 1 {3} | 2 {3} | 3 {3} | 4 {3} | 5 {3} | 6 {3} | 7 {3} | 8 {3} | 9 {3} | 0 {3} /

必须是更优雅的方式吗?它的PHP btw不允许使用g修饰符