2

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

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

1111 2568856 等 1111 2568 856 等

尽管在空格前后存在重复时它会失败

6 111 1 256 8856

为了匹配这个,我需要向正则表达式添加什么?

4

3 回答 3

1

使用反向引用再次匹配相同的数字:

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

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

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

于 2016-12-28T20:45:29.393 回答
0

我认为这很有效:

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

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

我用 stringr 包签入了 R(请注意,我必须转义反斜杠):

> str_extract_all("221 1 1 122 ", "(\\d)\\s?(\\1\\s?){3,}")
[[1]]
[1] "1 1 1 1"
于 2016-12-28T20:40:22.863 回答
0

没有一个答案对我有用(在 PHP 中),但这似乎可以完成这项工作:

(\\d(\\s*)?){3,}
于 2021-10-19T15:11:54.387 回答