• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストデータの抽出について教えてください。)

テキストデータの抽出方法とは?

このQ&Aのポイント
  • テキストデータの抽出方法について教えてください。秀丸を使って、特定のキーワードが含まれる行とその後の3行を抜き出したいです。データの形式はID、日付、名前、予約情報の3行組で構成されています。
  • 具体的には、以下のようなデータが2万件ほどあります。抽出したいデータは、ID、日付、名前、予約情報の3行をカンマ区切りでまとめた形式です。
  • ご希望のデータを簡単にまとめると、IDと「==予約==」の後の3行をカンマ区切りで一行にまとめたいということです。秀丸を使って対象のデータから特定の行を抽出し、必要な形式に整形することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.3

#ANo2 の補足です。 申し訳ない。質問者さまのデータの方の:(セミコロン)は全角ですね。半角で記述してしまいました。 以下の通り修正いたします。 ■1回目 検索欄(置換の欄は空白) ^(?!ID:[0-9]+|sono1:|sono2:|sono3:).*\n ■2回目 検索欄 ^(ID:.+)\n(sono1:.*)\n(sono2:.*)\n(sono3:.*)\n 置換欄 \1,\2,\3,\4\n (コピペの時に、\nの後ろに不要なスペースが入ることがあるのでご注意)

ca6513110
質問者

お礼

JaneDueさん ありがとうございました。無事解決しました。 正規表現は私にとってややこしく、解説書を読んでもなかなか頭に入ってこなかったのですが おかげ様で手掛かりを得た感じです。 この度は大変お世話になりました。頑張ります!!

その他の回答 (2)

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.2

他のデータが不規則に入るかも知れない、ということですね。 一発で置換できればよかったのですが、複数行で思うように動いてくれないので、少々ドン臭いですが、 1.必要な行以外を削除 >> 2.データを連結 でいきましょうか。 1.不要な行を削除する----------- 置換ウィンドウを開いて、正規表現にチェックを入れる ■検索欄に ^(?!ID:|sono1:|sono2:|sono3:).*\n ■置換の欄は空白のまま 2.必要なデータを連結する------- ■検索欄に ^(ID:.+)\n(sono1:.*)\n(sono2:.*)\n(sono3:.*)\n ■置換の欄に \1,\2,\3,\4\n で試してみてください。

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.1

置換ウィンドウを開いて 正規表現にチェックを入れる ■検索欄に (ID.+)\n.*\n==予約==\n(sono1:.+)\n(sono2:.+)\n(sono3:.+)\n\n==コメント==\n.*\n\n ■置換の欄に \1,\2,\3,\4\n でいけると思います。 こちらの手元では動作しましたが、言うまでもなくバックアップしてテストして下さい。 (こちらの環境:秀丸Ver7.09 正規表現DLL: HMJRE.DLL V1.92)

ca6513110
質問者

補足

ご回答ありがとうございます! こんなに早くいただけるなんて感激しています。 正規表現は勉強中で、頭から煙を出している状態です。 質問文に挙げたデータは簡素化したデータでございまして この場合はうまくいったのですが、入力データが必ずしもこの形になっているとは限らず 関係ないデータも沢山入っている場合はどうしたらいいのでしょうか。 上のデータをいじってみました。 説明が足らずで2度手間になり申し訳ございませんが、どうぞよろしくお願いします。 //////////////////////////////////// ID:20202,2010/5/19,山田太郎 ==確認事項== 会員証の確認 ==予約== sono1:video1 sono2:video2 sono3:video3 ==コメント== 延滞多し。 来店時間遅め。 店長の友人。 ID:20203,2010/5/19,山田二郎 ==予約== sono1:video10 sono2:video11 sono3:video12 ==コメント== コメントコメント ==その他== アルバイト希望 /////////////////////////////////////

関連するQ&A