在我们的网站(针对高度非技术人员)中,我们让他们在发送电子邮件时使用Markdown。这样,他们得到了大胆,斜体等不错的东西。然而,非技术性的,他们永远不会超越“添加两行以使换行实际工作”的怪癖。
出于这个原因,我们主要使用Github Flavored Markdown的变体。
我们主要借用了这一部分:
# in very clear cases, let newlines become <br /> tags
text.gsub!(/^[\w\<][^\n]*\n+/) do |x|
x =~ /\n{2}/ ? x : (x.strip!; x << " \n")
end
这很好用,但在某些情况下它不会添加新行,我想关键是那个评论的“非常明显的情况”部分。
如果我正确地解释它,这只是为以单词字符或'&lt;'开头的行添加换行符。
有谁知道为什么会这样?特别是,为什么'&lt;'?
将两个空格添加到基本上任何东西(以空格,连字符,任何东西开头的行)会有什么危害?
答案 0 :(得分:1)
'&LT;'在行的开头使用字符来引用消息。我猜这就是原因。
答案 1 :(得分:1)
这个问题的另一个答案是错误的。这与引用无关,而降价引用的字符为>
。
^[\w\<][^\n]*\n+
让我们将上述正则表达式分解为几部分:
^
=字符串的锚点开始。 [\w\<]
匹配单词字符或单词边界的开头。 \<
不 是文字,而是GNU字边界。请参阅here(为\<
执行 ctrl + f )。[^\n]*
匹配任意长度的非换行符\n
匹配新行。+
是一种占有量词。我相信,但我不是100%肯定,这只是用来将x
设置为一行文字。然后,繁重的工作完成了下一行:
x =~ /\n{2}/ ? x : (x.strip!; x << " \n")
这表示&#34;如果x
满足正则表达式\n{2}
(即有两个换行符),请保留x
。否则,剥离x
并附加换行符。