2

データは次のようになります。

Some junk data
More junk data 

1. fairly long key, all on one line
value: some other text with spaces and stuff

2. hey look! another long key. still on one line
value: a different value with some different information

これらはファイルごとにいくつかあり、通常は 20 ~ 30 個です。キーと値のペアの総数が 20,000 を超えているため、各ファイルを手動で修正することはできません。各キーの前にある番号は、適切に増加するはずです。値と次のキーの間に改行があるはずです。各値は、文字列 "value: " で始まる必要があります。

現在、行ごとに進み、各行をキー、値、ジャンクのいずれかに分類しています。次に、キーから数値を解析し、数値、キー、および値をオブジェクトに格納します。

データが不適切にフォーマットされていると、問題が発生します。これまでに遭遇したいくつかの問題を次に示します。

  • キーと値の間に改行はありません。
  • キーまたは値の途中にある予期しない改行。これにより、プログラムは各キーまたは値の一部をジャンク データとして表示します。
  • 「値」という単語のつづりが間違っています。

3 番目のシナリオは、各行の最初の 6 文字とマスター文字列 "value:" の間のレーベンシュタイン距離を計算することで処理します。他の 2 つの問題を解決するにはどうすればよいですか?

問題があれば、解析は node.js サーバーで行われますが、この一貫性のないデータをより簡単に処理できるのであれば、他の言語にも対応しています。

4

1 に答える 1

0

これを見てください:

正規表現:^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,} ここで説明されたデモ: http://regex101.com/r/gG0wH8

「スペルミスのある値」の問題が修正されている場合は、次のように単純化できます。
^(\d+)\. ?(.+?)value: ?(.+?)[\n\r]{2,}そうでない場合は、その正規表現部分に a を含むスペルミスをできるだけ多く追加し|ます。

これが機能するために、私は夢中になりました:

  • 行は数字とオプションのスペースを含むドットで始まる必要があります
  • keyidの前後のすべてです。value
  • value少なくとも 2 つの改行の後に終了します

また、正しいエントリを削除してから、ファイルを再調査して、他に不足しているものがないかどうかを確認する必要があります。

于 2013-03-11T21:41:41.683 に答える