你怎么会这样:
Dear Fred How are you? Regards John
进入这个:
Dear Fred How are you? Regards John
注意:允许单次和双次休息,但不得超过。例如,我们想要从:
"Dear Fred\n\n\n\nHow are you?\n\n\n\n\n\n\nRegards\nJohn"到
"Dear Fred\n\nHow are you?\n\nRegards\nJohn"
但也应该适用于“\ r \ n”。
答案 0 :(得分:2)
替换
(\r\n|\n|\r)\1+
与
\1
\1
指的是反向引用。在红宝石中,我相信它们是通过$1
完成的。
答案 1 :(得分:2)
这样的东西?
s.gsub /(\r?\n){3,}/, '\1\1'
似乎至少可以使用您的示例:
irb(main):060:0> s
=> "Dear Fred\n\n\n\nHow are you?\n\n\n\n\n\n\nRegards\nJohn"
irb(main):061:0> s.gsub /(\r?\n){3,}/, '\1\1'
=> "Dear Fred\n\nHow are you?\n\nRegards\nJohn"
答案 2 :(得分:1)
str.gsub!(/\n{3,}/, "\n\n")
str.gsub!(/(\r\n){3,}/, "\r\n\r\n")
正则表达式/ \ n {3,} /搜索3个或更多连续的换行符(\ n)。这些被2个换行符替换。 重复\ r \ n。
["\n", "\r\n"].each{|lb| str.gsub!( /(#{lb}){3,}/, lb*2 )}
是否相同。