メモ帳++正規表現:セミコロンがフィールド区切り文字の場合、1つ以上のテキスト値のセミコロンをダッシュ​​に置き換えます


0

私は少し苦労しています。操作する必要があるファイルは、フィールド区切り文字としてセミコロンを含むcsvです。一部のデータセットでは、セミコロンを含むコメントが追加されました。幸いなことに、これらのコメントは「。」で始まり、「。

例:

;;;"sometext many words or few ; more text; even more text";;;;;;

「」の間にあるセミコロンをすべて置き換える必要がありますが、テキストはそのままにしてください。手伝ってくれてありがとう。

サンプルデータセット:

Before Regex find & Replace:  
Fieldtitles: f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11  
Dataset1: ;;text;text;;text;text;text;text;text;text  
Dataset2: text;"text text text ; text text";text;text;text;text;text;text;text;text;text

After Regex find & Replace:  
Fieldtitles: f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11  
Dataset1: ;;text;text;;text;text;text;text;text;text  
Dataset2: text;"text text text _ text text";text;text;text;text;text;text;text;text;text  

元のファイルのサンプルと期待される出力を共有してください。
サンディープ

目標がcsvファイルをExcelに読み込む場合、メモ帳でcsvファイルを編集し、次の行を先頭に追加しますsep=;。問題なくExcelに読み込むことができるようになりました。
LPChip

@LPChip:ありがとう、これはexcel-displayで機能します。しかし、私は、DBのインポートを標準化する必要があり、テーブルには、正規表現F&R使用するソリューションを好むだろう、15万行を持っている
スヴェン

最初にExcelで正常に取得してから、そこで検索/置換することができる場合があります。これは答えではありませんが、回避策であり、1回限りの場合はあなたのエスケープかもしれません。
LPChip

回答:


1
  • Ctrl+H
  • 何を見つける: "[^";]*\K;(?=[^";]*")
  • と置換する: _
  • ラップアラウンドをチェック
  • 正規表現を確認する
  • Replace all

説明:

"           : a double quote
[^";]*      : 0 or more any character that is not a double quote or a semicolumn
\K          : forget all we have seen until this position
;           : a semicolumn
(?=         : start lookahead, make sure we have, after current position,
  [^";]*    : 0 or more any character that is not a double quote or a semicolumn
  "         : a double quote
)           : ed lookahead

置換:

_       : an underscore

与えられた例の結果:

Fieldtitles: f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11  
Dataset1: ;;text;text;;text;text;text;text;text;text  
Dataset2: text;"text text text _ text text";text;text;text;text;text;text;text;text;text    

0

[置換]ウィンドウで、次を指定します。

  • 何を見つける: \"(.*?);(.*?)\"
  • と置換する: "\1_\2"
  • Regular Expressionラジオの箇条書きを確認してください。

これは置き換えられます;_1 semicolumnが含まれるコメントで。正規表現の内訳:

  • \" -二重引用符からマッチングを開始
  • (.*?); -最初のセミカラムまですべてを一致させる
  • (.*?)\" -次の二重引用符まですべて一致
  • "\1_\2"-に置き換えながら、一致した二重引用符と一致した部分式#1および#2を出力;_ます。

コメントに複数のセミコロンを含めることができる場合は、Replace AllWrap aroundオプションをオンにして)ヒットし続けるだけです。すべてのセミコロンが置き換えられるまで、コメントごとに1つのセミコロンを置き換えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.