ruby中用于匹配行间内容的正则表达式

ruby中用于匹配行间内容的正则表达式,ruby,regex,email,Ruby,Regex,Email,我试图在Ruby 1.8.7上找到一个正则表达式,用于从电子邮件中删除线程。为此,我需要删除邮件边界之间与线程模式匹配的所有内容,例如,在Mac mail上,我需要删除粗体文本(简化示例HTML以避免占用大量空间,real mail的HTML要简洁得多): 但是,在第一个“On”之前,这并不像从边界右侧捕获那样有效。这里有两个正则表达式将匹配文本。您可以gsub在每个表达式中输出相应的匹配组 /(^On\d\d\/\d\d\/\d{4}.$\n(\n>*$)*\n\n)/ /(在\d\d\/\d

我试图在Ruby 1.8.7上找到一个正则表达式,用于从电子邮件中删除线程。为此,我需要删除邮件边界之间与线程模式匹配的所有内容,例如,在Mac mail上,我需要删除粗体文本(简化示例HTML以避免占用大量空间,real mail的HTML要简洁得多):


但是,在第一个“On”之前,这并不像从边界右侧捕获那样有效。这里有两个正则表达式将匹配文本。您可以
gsub
在每个表达式中输出相应的匹配组

  • /(^On\d\d\/\d\d\/\d{4}.$\n(\n>*$)*\n\n)/
  • /(在\d\d\/\d\d\/\d{4}.*\n\n(.*\n)*)/
  • 这应该是一个很好的开始,但可以改进为更通用的,但因为我们只知道一个例子,所以我写这篇文章就是为了解决这个问题

    参考资料


    好的,所以解决这个问题的方法非常简单,我最终得到了如下表达式:

    --Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036.+?(On \\d{0,2}[\\/\\-]\\d{0,2}[\\/\\-]\\d{0,4}.+?)--Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036
    

    无需对此进行前瞻/回顾。

    对不起,我应该补充一点,该示例实际上是一封真实电子邮件的简化。问题已更新。
    --Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036.+?(\bOn.+?)(?!--Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036)
    
    --Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036.+?(On \\d{0,2}[\\/\\-]\\d{0,2}[\\/\\-]\\d{0,4}.+?)--Apple-Mail=_EFA7D6C2-C778-4C8E-AA13-C97DF1FA9036