REGEX - 再次匹配多行

时间:2011-02-12 00:34:26

标签: ruby regex rubular

给出如下文字:

XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX.XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX.XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX.

Boss: asdasdasdasd
Date: XXX, XXXXXXXXX

我想匹配最后3行:

这是我正在尝试但却失败了:

^Boss:.*$^Date:.*$

连连呢?感谢

3 个答案:

答案 0 :(得分:2)

你可能需要跳过前x行...你也可以锚定^可能导致你不匹配。

尝试

(?:.*[\r\n]*)*Boss:.*(?:.*[\r\n]*)Date:.*

答案 1 :(得分:2)

^Boss:.*[\r\n]+Date:.*$

行锚^$是零宽度断言;他们声称某些条件适用而不消耗任何字符。

  • ^表示当前位置是输入的开头,或者紧接着是行分隔符。
  • $表示当前位置是输入的结尾,或紧接着是行分隔符。

但他们都没有使用行分隔符,因此$^永远不会匹配。 [\r\n]+匹配(并使用)一个或多个回车符或换行符,因此它处理三种最常见的行分隔符:\r(较旧的Mac标准),\r\n(Windows /网络标准)和\n(Unix / Linux / Mac OS X /几乎其他所有东西)。

答案 2 :(得分:0)

如果您的文件大小不是GB范围

ruby -e 'a=File.read("file"); p a.split(/\n/)[-3..-1] '