REGEX – 再次匹配多行

给出如下文字:

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:.*$ 

建议? 谢谢

你可能需要跳过前面的第几行…你也可以锚定^可能导致你不匹配。

尝试

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

行锚点^$是零宽度断言; 他们声称某些条件成立并且不消耗任何字符。

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

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

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

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