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] '