我广泛理解正则表达式,但我希望有人可以帮助理解这一点。我用它来插入一个双新线,之前只有一个 - 它几乎可以工作,但并不完全。我从'github flavoured markdown'中偷走了它 - 它修改为更直观地支持新线条。
cleaned.gsub!(/^[\w\<][^\n]*\n+/) do |x|
x =~ /\n{2}/ ? x : (x.strip!; x << " \n")
end
答案 0 :(得分:11)
/^
- 从字符串的开头:
[\w\<]
- 匹配任何后一个角色或开放角括号。之后:
[^\n]*
- 应该有任何非新的行字符,
\n+/
- 最后应该是一行或多行。
然后在每个匹配代码替换为:
如果匹配的代码包含两个新行,则保持不变。
否则在末尾剥去一个添加空格和新行。