我试着把From行一直匹配到Subject行的末尾,如下所示:

....
From: XXXXXX 
Date: Tue, 8 Mar 2011 10:52:42 -0800 
To: XXXXXXX
Subject: XXXXXXX
....

到目前为止,我已经:

/From:.*Date:.*To:.*Subject/m

但这与主题行的结尾不符.我试着加$,但没有效果.

推荐答案

可以使用/m修改器启用多行模式(即允许.匹配换行符),也可以使用?执行非贪婪匹配:

message = <<-MSG
Random Line 1
Random Line 2
From: person@example.com
Date: 01-01-2011
To: friend@example.com
Subject: This is the subject line
Random Line 3
Random Line 4
MSG

message.match(/(From:.*Subject.*?)\n/m)[1]
=> "From: person@example.com\nDate: 01-01-2011\nTo: friend@example.com\nSubject: This is the subject line"

请参阅http://ruby-doc.org/core/Regexp.html并搜索"多行模式"和"默认贪婪".

Ruby相关问答推荐

我可以在Ruby中以散列的形式访问方法的关键字参数吗?

当 node 名称是/包含整数时,使用 Nokogiri 解析非 XML 文档

使用正则表达式判断用户输入的开头是否正好有两个大括号

如何从外部获取给定 lambda 的参数值,而不显式返回其绑定?

Ruby 中的内联注释

Faraday中的timeout和open timeout是什么?

将块传递给方法传递给Ruby中的另一个方法

Ruby语法

为什么在Ruby中用空格分隔的两个字符串连接在一起?

将方法应用于数组/可枚举中的每个元素

如何删除Ruby中数组中满足条件的所有元素?

在 Ruby 中取消定义变量

我可以使用 `else if` 而不是 `elsif` 吗?

删除/取消定义类方法

Ruby Koans 的 test_sharing_hashes 中的附加问题的答案是什么?

野外的好黄瓜例子?

为什么 Ruby 文档中的方法前面有一个井号?

Python 中的一切都像 Ruby 一样是对象吗?

如何在 Ruby 中读取整个文件?

将字符串与Ruby中的数字连接起来