0

次のようなテキストが与えられます:

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

提案?ありがとう

4

3 に答える 3

2

最初のx行をスキップする必要があるかもしれません...また、アンカー^が原因で一致しない可能性があります。

試す

(?:.*[\r\n]*)*Boss:.*(?:.*[\r\n]*)Date:.*
于 2011-02-12T00:55:31.020 に答える
2
^Boss:.*[\r\n]+Date:.*$

ラインアンカー、^および$は、幅がゼロのアサーションです。彼らは、文字を消費せずにいくつかの条件が当てはまると主張します。

  • ^現在の位置が入力の先頭であるか、行区切り文字の直前にあることを意味します。
  • $現在の位置が入力の終わりであるか、直後に行区切り文字が続くことを意味します。

ただし、どちらも行区切り記号を使用しないため、一致$^することはありません。 [\r\n]+1つ以上のキャリッジリターンまたはラインフィードに一致する(そして消費する)ため、\r(古いMac標準)、\r\n(Windows /ネットワーク標準)、および\n(Unix / Linux / Mac OS X /pretty )の3つの最も一般的なタイプの行区切り文字を処理します。他のほとんどすべて)。

于 2011-02-12T03:49:50.613 に答える
0

ファイルのサイズがGB範囲でない場合

ruby -e 'a=File.read("file"); p a.split(/\n/)[-3..-1] '
于 2011-02-12T00:57:28.403 に答える