2011-06-19 7 views
4

私は基本的にのように見える行を持つCSVを持っている:Notepad ++は - いくつかのものを再フォーマットしようとしている

06444|WidgetAdapter 6444|Description: 

Here is a description. 
Maybe some more. 
|0 

3番目のフィールド内のテキストは常に異なると変化している、と私はすべての改行を交換しようとしていますその中にのみ<br>と、それは

06444|WidgetAdapter 6444|Description: <br>Here is a description.<br>Maybe some more.<br>|0 

編集として終わる:

は、私は基本的にすべての改行を取り除くために必要があるので、各ラインが適正値である| VALUE | VALUE | VALUE。それを正常化/美化/きれいにする。

私のツールのいずれもが、phpMyAdminのチョーク、これを適切にインポートすることはできませんなど フィールド内の改行がありますが、エスケープされていない二重引用等、ある

例他のフィールド:

​​ 別のフィールドの

例:

39338|Itemizer|| 
+0

は私の答えを削除し、それはあなたが行っているよう – BoltClock

+0

が見えます...簡単な検索/置き換えが処理できるよりも複雑に見えますあなたの質問を明確にしてください:) –

+0

私はBoltClockと同意します。 –

答えて

1

あなたは4列を持って知っていれば、簡単にあなたのデータを解析することができます。たとえば、すべてのデータを含む配列を返すPHP行があります。アレイ内の各ラインは、すべての捕捉基と別の配列である:[0]全体一致を有し、[1] - 各列に[4]

$pattern = '/^([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)$/m'; 
preg_match_all($pattern, $data, $matches, PREG_SET_ORDER); 

パターンは非常に簡単である:それは4つの値(ないパイプ記号)を取り、 3本のパイプで区切られている。データを取得したら、たとえばnl2brを使用して、簡単にデータを再構築できます。
最初の列と最後の列にも新しい行がある場合は、データを確実に解析できないことに注意してください。

の作業例:http://ideone.com/gG0K3

+0

4つの列があるかどうかはわかりません。 – jmoon

+0

最後の列は、改行の場合は\ rまたは\ nの組み合わせ、または両方がテキストまたは実際の文字のいずれかになります。すべての行に同じ量の列があるわけではありません。残念ながら。この気圧で混乱しようとしています。 – jmoon

+0

@Jmoon - うーん...しかし、3番目だけが新しい行を持っているかもしれない?もしそうなら、/^[^ | \ r \ n] * \ | [^ | \ r \ n] * \ | [^ |] * \ |([^ \ r \ n] *)$/m'かもしれません。あなたのために働くと、あなたは '|'で分割する必要があります。私はそれがどれほど解決できるのかよくわかりません...詳細を聞いてうれしいです:) ' – Kobi

1

必要であれば、それは正規表現を使用して、これらの改行をターゲットとすることが可能です。その考え方は、改行だけを見つけて、その後に1つの余分な値をつけてから、全体の行だけを見つけることです。現在の改行が1つのモジュロ4で後に私たちは、値の数を確認することができますので、我々は、我々は3列でいる知っている:(一部)の説明と

(?:\r\n?|\n)(?=[^|]*\|[^\n\r|]*\s*(?:^(?:[^|]*\|){3}[^\n\r|]*$\s*)*\Z) 

または、:

(?:\r\n?|\n) # Match a newline 
(?=   # that is before... 
    [^|]*\|[^\n\r|]*\s*    # one more separator and value 
    (?:^(?:[^|]*\|){3}[^\n\r|]*$\s*)* # and some lines with 4 values. 
    \Z        # until the end of the string. 
) 

Iそれは(それも[\r\n]と一致しませんでした)++メモ帳で仕事を得るが、他のエンジンでうまく動作するようですができませんでした:

+0

重要な注意:この方法は300,000行では少し遅いかもしれません。 – Kobi

関連する問題