我有这样的文字:
str = "
This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 5.
This is line 6.
This is line 7.
This is line 8.
This is line 9.
This is line 10."
在ruby中,我希望每隔3行换一行此文本的数组。
arr = ["This is line 1.
This is line 2.
This is line 3.",
"This is line 4.
This is line 5.
This is line 6.",
"This is line 7.
This is line 8.
This is line 9.",
"This is line 10."]
我无法获得正确的RegEx规则来完成它。 到目前为止,我得到了
arr = str.split(/((?:.*)\n){3}/)
不幸的是,它不仅匹配第3行&n;而且还匹配它之前的文本。如果以某种方式我可以排除该文本
,那将是很棒的答案 0 :(得分:2)
这可能不像正则表达式那样华丽,但也许它更容易理解......
string.split(/\n/).each_slice(3).map { |slice| slice.join("\n") }
答案 1 :(得分:1)
您可以使用以下正则表达式:
(\n?[^\n]*\n[^\n]*\n[^\n]*)
http://rubular.com/r/f2at0uX3D2
请注意,您需要使用匹配除换行符之外的任何内容的.*
,而不是[^\n]*
。
或更精确:
((?:[^\n]*\n){3})
答案 2 :(得分:1)
答案 3 :(得分:1)
答案 4 :(得分:0)