您可以更换((?:\d+, ){3}\d),
with \1\n
您基本上捕获了 group1 和逗号中第四个逗号之前的所有内容,并将其替换为\1\n
它将匹配的文本替换为 group1 文本和换行符,从而为您提供预期的结果。
正则表达式演示 https://regex101.com/r/zebqLb/1
R 代码演示 https://rextester.com/XCCR51033
gsub("((?:\\d+, ){3}\\d),", "\\1\n", "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")
Prints,
[1] "1, 2, 3, 4\n 5, 6, 7, 8\n 9, 10"
Edit:
要将上述解决方案推广到任何文本,我们可以更改\d
to [^,]
新的 R 代码演示 https://rextester.com/OQW75303
gsub("((?:[^,]+, ){3}[^,]+),", "\\1\n", "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")
gsub("((?:[^,]+, ){3}[^,]+),", "\\1\n", "a, bb, ccc, dddd, 500, 600, 700, 800, 900, 1000")
Output,
[1] "1, 2, 3, 4\n 5, 6, 7, 8\n 9, 10"
[1] "a, bb, ccc, dddd\n 500, 600, 700, 800\n 900, 1000"