2012-03-11 7 views
0

私は構造が異なるテキストデータをたくさん持っています。テキストベースのルールに基づいてこれらのテキストの一部を抽出する必要があります。 正規表現を使用しますが、残念ながらアプリケーションを使用している人はそれを聞いたことがありません。別のテキストボックスにルールの簡単なセットとして一般的なルールでテキストファイルからコンテンツを抽出する

  1. テキストボックス
  2. タイプにデータをロードし、出力の構造
  3. がで結果を受け取る:

    基本的にアプリは、以下のものがありません第三テキストボックスのデータ構造の

例(私はこのデータのメガバイトを持っている):

Label1: value1, measurement 
Label2; value2; something else 
Nr, value3 (comment) 
... 

正規表現の代わりに使うことができるアプローチが必要です。私が必要とするのは、すべての行から1つの値が必要なので、非常に簡単なことです。

私は次の構造を取得する必要があり、上記の例から、

"value1, value2, value3" 

はRegexするシンプルな代替手段はありますか?誰かが既にこのようなものを実装していましたか?

私は間違った角度から、簡単なユーザーにデータ抽出ルールを書き込ませるように、問題に近づいていると想像することもできます。この場合、質問は「非常に単純なユーザーが別々のテキストからデータを抽出できるようにアプリケーションを構築する方法」のように、より一般的なものに変換されます。

編集: 私は彼らのために実装可能なマッチングとして、次の最も簡単なを持っている:

ファイル内容:

"Strain at break Ax2";"Unknown" 
"Strain at break Ax1";"Unknown" 
"Strain at break";"Unknown" 
"Yield point strain";"Unknown" 
"Uniform elongation";25.4087;"%" 
"Tensile strength";261.323;"MPa" 
"End test phase Yield point";1;"%" 
"Maximum tensile force";5.22647;"kN" 

パターン:

"Tensile strength";(?<value>[^;\n]*); 
"Maximum tensile force";(?<value>[^;\n]*); 

まだ複雑すぎます。

"Tensile strength", [First value after] 

すべてのファイルはこの1つは異なる見えるので、私は抽出のすべての一般的な性格を失う:私はたとえば取得するために別の文字列との醜い部分を交換し始める場合、問題があります。

+0

LEXを見ましたか? – GETah

+0

_ "正規表現を使用しますが、残念ながらアプリケーションを使用している人はそれを聞いたことがありません" _。ユーザーの開発者ですか、あなたですか? –

+0

ユーザーは、プログラミングに関するトレーニングを全く受けていない油圧プレスを使用している研究室のアシスタントです。 – Germstorm

答えて

0

ルールを正規表現として定義して問題を解決しました。ルールが定義された後、私はラッパールールセットを定義しました。これはユーザーが読みやすくなりました。

Ex。ライン

Maximum amount of Sheet Drawing Force= 35.659695[kN] 

から値を抽出するために、私は、ユーザーがフィールドの名前を定義しましょう正規表現

{0}=\s*(?<value>[^[\n\r]*) 

を定義しました。 {0}プレースホルダは、フィールドの名前に置き換えられ、正規表現が適用されました。

1

FileHelpersライブラリをご覧ください。それはruntime generation of file layoutsを可能にし、私はあなたの例で助けると思うものはDelimitedClassBuilderだと思います。

あなたのケースでは、おそらくFileHelpersを使用してDelimitedClassBuilderにレコード定義を解析し、その結果を使用してレコードを解析します。

関連する問題