正则表达式匹配重复数字(3 个或更多)忽略空格

Regex matching repeating digits (3 or more) ignore whitespace

我一直在研究,虽然我还没有弄清楚如何创建一个正则表达式,它只匹配连续重复 3 次或更多次的数字,同时忽略白色 spaces。

例如我目前有 (\d)\1{3,} 匹配

11112568856 等 1111 2568 856 等

尽管在 space

前后存在重复时失败

6111 1256 8856

我需要在正则表达式中添加什么才能匹配它?

我认为这有效:

(\d)\s?(\s?){3,}

“\s?”部分说明可选空格,“?”等于 {0,1}。

我在 R 中检查了 stringr 包(注意我必须转义反斜杠):

> str_extract_all("221 1 1 122 ", "(\d)\s?(\1\s?){3,}")
[[1]]
[1] "1 1 1 1"

使用backreferences再次匹配同一个数字:

(\s?\d\s?)(\s?){2,}

https://regex101.com/r/FNNS1z/3

http://www.regular-expressions.info/backref.html

None 的答案对我有用(在 PHP 中),但这似乎可以完成工作:

(\d(\s*)?){3,}