使用RegEx如何计算字符串中的三次重复?
示例122244445577777
1 222 444 4 55 777 77
回答3
答案 0 :(得分:1)
由于未提及语言/工具,我将添加某些语言的答案。但是,相同的RegEx可以在任何语言中使用,只需很少或不需要修改。
([0-9])\1\1
此处,([0-9])
将匹配一个数字并将其放入第一个捕获的组中,以后可以使用反向引用\1
进行访问。
同样的RegEx也可以写成
(\d)\1{2}
如果您想将此字符用于任何字符而不仅仅是数字,您可以使用以下RegEx。
(.)\1\1
<强>的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的:强>
var input = "122244445577777";
var regex = /([0-9])\1{2}/g;
var tripletCount = (input.match(regex) || []).length;
document.write(tripletCount);
&#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修饰符