0

作成された CSV があり、列からテキスト コメントを引用せず、改行を含みます。

カンマがあり、引用符がない csv の正規表現も同様の質問ですが、解析する別の行や追加の列がありません。

csv のテキスト行は次のようになります。

    1, 15231, 123123, 1231, word word word, YYYY-MM-DD HH:mm:ss.sss, 13453, **This would be the section with any character for users to communicate and the db stores and 
new lines to record communication**, YYYY-MM-DD HH:mm:ss.sss, User name, 12412413, 01231231, 123,12,,*ASTERIX USED*, YYYY-MM-DD HH:mm:ss.sss

次に、別の新しい行と約のようなものが解析され、

これまでのところ、私はこれを試しました

/(\d+?),(\d+?),(\d+?),(\d+?),(.+?),(.+?),(.+?),(.+?),(.+?),(.+?),(.+?),(.+?),(.+?),(.+?),(.+(?=,\d{4})),

しかし、csv のコメント セクションに日付の参照がある場合、インスタンスを通過できないようです。

単純な正規表現パターンを超えなければならなかったので、正規表現はほとんど新しく、(?=) は私にとって初めてです。

4

1 に答える 1

1

必要なフィールドの正確な数がわかっている場合は、次の方法を使用できます。

  • コンマを含まない「通常の」フィールドごとに、次を使用します[^,]*
  • カンマを含む可能性のあるユーザー入力フィールドには、次を使用します.*
  • 各フィールドはコンマで区切ります

たとえば、5 つの合計フィールドがあり、3 番目がユーザーによって入力される場合、次の正規表現を使用します。

([^,]*),([^,]*),(.*),([^,]*),([^,]*)

例: http://www.rubular.com/r/E6785bWW0R

ユーザーが入力したフィールドに改行が含まれている可能性がある場合は、オプションを有効にして、.改行文字 (多くの場合s、または のような定数DOTALL、一部の言語では正規表現の前に を付けることができます) と一致するようにしてください(?s)。または、使用するオプションに関係なく、すべてに一致する に.*置き換えるだけです。[\s\S]*

于 2012-11-30T22:50:16.570 に答える