我一直在调查,虽然我还没有设法弄清楚如何创建一个正则表达式,它只匹配连续重复 3 次或更多次同时忽略空格的数字。
例如,我目前有 (\d)\1{3,} 匹配
1111 2568856 等 1111 2568 856 等
尽管在空格前后存在重复时它会失败
6 111 1 256 8856
为了匹配这个,我需要向正则表达式添加什么?
我一直在调查,虽然我还没有设法弄清楚如何创建一个正则表达式,它只匹配连续重复 3 次或更多次同时忽略空格的数字。
例如,我目前有 (\d)\1{3,} 匹配
1111 2568856 等 1111 2568 856 等
尽管在空格前后存在重复时它会失败
6 111 1 256 8856
为了匹配这个,我需要向正则表达式添加什么?
我认为这很有效:
(\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"
没有一个答案对我有用(在 PHP 中),但这似乎可以完成这项工作:
(\\d(\\s*)?){3,}