0

正規表現分割を使用してファイルを解析しようとしています。これは文字でうまく機能します'\t'が、一部の行'\t'では区切り文字として機能する代わりにフィールド内にあります。

好き :

G2226   TEST 1  C   29  Internal Head Office    D   Head Office ZZZ Unassigned  10910   10/10/2011  11/10/2011  10/10/2011  11/10/2011  "Test call  Sort the customer out some data. See the customer again tomorrow to talk about Prod     "   Mr ABC          Mr ABC                  Mr  ABC Mr  ABC Credit Requested    BDM Call    Internal Note   10

この部分には2つのタブがあります。無視してください。

"Test call  Sort the customer out some data. See the customer again tomorrow to talk about Prod\t\t"

良いことは、それらが二重引用符で囲まれていることですが、それらを無視する方法を理解することはできません、何かアイデアはありますか?

編集:

私の目標は36列を取得することです。一部のフィールドには文字が含まれているため、Regex.Split(lineString,'\t')使用後に一部の列がより多く表示される可能性があります。それらは無視したいと思います。上記のものは38colsになりますが、ヘッダーが36 colsしかないため、データテーブルによって拒否されます。この問題を解決したいと思います。'\t''\t'

4

3 に答える 3

0

正規表現はこのための適切なツールではありません。

基本的にCSV形式で、「カンマ区切り」ではなく「タブ区切り」ですが、まったく同じように機能します。したがって、CSVパーサーを見つけて、それを使用します。通常、区切り文字は構成可能です。

于 2013-02-15T12:40:23.010 に答える
0

単純なCSVファイルがある場合は、通常、正規表現分割が最も簡単な処理方法です。

ただし、CSVファイルに区切り文字や改行を含む引用符で囲まれたフィールドなど、より複雑な要素が含まれている場合、このアプローチは機能しなくなります。これらのタイプのファイルを正しく解析することは簡単なことではないため、可能な場合はライブラリを使用する必要があります。

この質問への回答は、CSVファイルを読み取ることができるC#ライブラリのいくつかのオプションを提供します。

于 2013-02-15T12:47:07.227 に答える
0

本当に正規表現が必要な場合は、次のように試すことができます。

(?!\t")\t(?!\t")
于 2013-02-15T12:47:29.393 に答える