2016-09-22 8 views
0

複数のレコード間で複数の行にまたがる最初のレコードエントリに一致する単一のパターンであるスカラソリューションが必要です。レコードは常にRECORDという語で始まります。両方のシナリオにおいてscala regex .. 1つまたは複数のレコードが存在する場合に一致する単一のパターン

Scenario1

 
================================================== 
RECORD-1
    "FOO BAR"
    "ID-100"
    "TOY"
==================================================

Scenario2

 
================================================== 
RECORD-1
    "FOO BAR"
    "ID-100"
    "TOY"
RECORD-2
    "X BAR"
    "ID-200"
    "DOLL"
RECORD-3
    "Y BAR"
    "ID-400"
    "STATUE"
==================================================

、Iは、Scalaのコードを使用して抽出された最初のレコード、 "FOOバー" を必要とします。 REPLソリューションはより歓迎です。

+0

あなたの側からの試行はありますか? – Flint

+0

ファイルに1つ以上のレコードがあり、最初のレコードだけが必要ですか? – jwvh

+0

@Flint、私は以下のperlコードを持っていました.. scala echo -e "Record ... \ nRecord ... \ nRecord ..."で同じものをシミュレートしたいperl -ne 'BEGIN {$/= ""} {$ _ =〜s/Record(。+?)(<?レコード)(。*)/ Record¥1/mosg; print} ' echo -e "Record ..." | perl -ne 'BEGIN {$/= ""} {$ _ =〜s/Record(。+?)(<?レコード)(。*)/ Record¥1/mosg; print} ' – stack0114106

答えて

0

2番目のレコードまですべてを簡単に取り込むことができます。

scala> val firstRec = io.Source.fromFile("records.txt").getLines.takeWhile(_ != "RECORD-2") 
firstRec: Iterator[String] = non-empty iterator 

そこから不要な部分(ヘッダー、空白行など)のレコードをトリミングすることができます。

+0

行の先頭で始まります...元の質問にいくらか複雑さを加えます。私は10のレコードがあり、 "FOO BAR"に3つの重複があると仮定します。重複は連続して表示されています。たとえば、6,7,8番目のレコードです。その場合、6番目のレコードのみを抽出できますか?それは.. "FOO BAR"重複の中の最初のレコードです。 – stack0114106

+0

私はそのシナリオでは、すべてのレコードを読み込み、簡単な処理(フィルタリング、重複検出など)を可能にするデータフォーマットでそれらをパックするのが最も簡単かもしれないと思います。 – jwvh

+0

私は苦労しています..私はどのようにデータフォーマットに入れますか?解決策を提示してください。 – stack0114106

関連する問題