• ベストアンサー

データ分割 正規表現だけで可能?

mosuradazoの回答

回答No.2

Text::ParseWordsモジュールでできます。 例) use Text::ParseWords; @b=quotewords(",",0,"AAA,\"b\",cc"); p join("-",@b); AAA-b-cc 以上です

noname#25358
質問者

お礼

 ありがとうございます!  やってみますね。

関連するQ&A

  • CSV形式ファイルにある、カンマについて

    こんにちは。 現在、VB2005で、CSV形式のファイルを読むプログラムを 作っているのですが、CSV形式の1フィールドの中に カンマが入っているデータがあります。 フィールドの区切りのカンマではなく、文字としての カンマとして取り扱う場合は、そのカンマはどのように 変換すればいいのでしょうか? エスケープシーケンスという方法があるというところまでは わかったのですが、具体的にどのようにすればいいのかが わかりません。 よろしくお願いいたします。

  • CSVファイル読み込み、書き込み時の一般的な方法

    いつもお世話になります。 下記CSVデータの場合の分割された結果を示していますが、データを分割する際、一般的には、 どのような考え方で分割するロジックを組めばよいでしょうか。 CSVファイル読み込み、書き込み時におけるルール。 (間違っている、漏れているなどありましたらご指摘頂ければと思います。) ・ダブルコーテーションで括る必要のあるデータ  以下のデータを含むデータ。   区切り文字、改行、ダブルコーテーション ・ダブルコーテーションが入るデータは、ダブルコーテーションでエスケープする  aa"bb ⇒ aa""bb   上記ルールに則ったCSVファイルの読み込み方。  123,aaaaa,ああいい,"13,55","aa""bb","ab(改行)ZZ","ああ"",いい"   ↓  データ1 123  データ2 aaaaa  データ3 ああいい  データ4 13,55  データ5 aa"bb  データ6 ab(改行)ZZ  データ7 ああ",いい    上記結果になるようにデータを分割すればいいのですが、データにダブルコーテーションがある 場合、書き込み時に付与、読み込み時に削除、という具合にデータの編集処理が入ってしまうが いいのか、何かのミスで、ダブルコーテーションがエスケープされておらず、カンマと連続で 定義されていた場合「",」、データの終わりを示してしまい、意図しない個所で分割されてしまうの ではないか、何かのミスでダブルコーテーションの始め、もしくは終わりの定義が漏れいた場合 (「・・・,"aaaa,・・・」「・・・,aaaa",・・・」など)、これも意図しない個所で分割されてしまう、 などなど、一般的にはどのようなロジックにしておけばよいのでしょうか。 そもそもロジックで全てを防ぐ事はできない、ということでしたら、事前にこれだけは決めておくべき、 というポイントがありましたら、教えて頂けると嬉しいです。 世の中には、CSVファイルを分割するためのライブラリなどが公開されていますが、 外部のライブラリを使用してはいけないプロジェクトの場合など、自分で自作する必要があります。 その際の一般的な考え方、注意点などを踏まえて作ることができれば、無用なバグを含ませる ことができずにすむので、皆様の考えを教えて頂きたいと思い、質問した次第です。 宜しくお願いします。

    • ベストアンサー
    • Java
  • エクセル:桁区切り「カンマ」でセルが分割されて貼り付けされてしまう

    仕事で社内のシステムから売上の情報をコピーしてエクセルに貼り付けて処理をしようとしたところ、コピーした数字に「桁区切りのカンマ","」がある関係で、 たとえば 1,234,567 という数字が 1 と 234 と 567 とセルが分割されて貼り付けられてしまいます。 CSVファイルのカンマ区切りデータと同じように情報がカンマで分割されてしまっているようなのですが、貼り付けの際に分割されないようにするにはどうしたらよいでしょうか? ちなみに、これらデータはスペースで区切られているので一度テキストファイルに保存して、CSVを開くときの区切り文字の設定を「スペース」に設定すればうまく開くのはわかるのですが、コピーして即貼り付けのときにこのようになることを回避する方法はあるのでしょうか?マクロを組んでも構いません。 どうぞ、ご教授、宜しくお願いします。

  • データにカンマが入ったCSVデータのread方法

    VBにてCSVデータを読み込むロジックを組んでいるのですが データの中にカンマが入ったものがたまにあります。 通常通り読むとデータのカンマを区切りのカンマと間違え正しく変数に読み込まれません。 たとえばCSVデータが下記の場合 123,de-ta,12,000,jjjj 実際のデータは 123 de-ta 12,000 jjjj ですが 12,000を2個のデータと認識して 123 de-ta 12 0000 jjjj のようになってしまいます。 どなたか12,000をちゃんと読める方法をご存知の方お力をお貸しください。 よろしくお願い致します。

  • ACCESS VBAで、CSVにデータを吐き出したいのです

    ACCESS VBAで、CSVにデータを吐き出したいのですが、WORKのテーブルを作るのが面倒なので、変数にセットしたカンマ区切りのデータを直接CSVに吐き出したいと思っております。 TXT = .Height & "," & .Weight を Open "A:DATA.CSV" For Output As #Name へ一件ずつループで回して吐き出したいのですが、「型が一致しません」というエラーがでます。ご存知の方がいらっしゃいましたら、どいうロジックを書けば良いか教えて下さい。

  • cshで文字列分割

    ヤマトです。 cshの文字列分割について質問します。 環境はRed Had Linux7.2です。 set DATA = hoge1;hoge2;hoge3 のデータを";"区切りでDATA_ARR(配列)に入れたいのですが、分かりません。 調べた所、[awk]と[split]を使えばできるようなのですが、 実際どのようにSHに記述していいか分かりません。 n = split(DATA,DATA_ARR,";") をどのように記述したらよいのでしょう? 教えて頂けると有り難く思います。宜しくお願いします。

  • SQLのデータを分割してブラウザに表示

    環境は MYSQL PHP 4.1.3 WIN2000 よく掲示板等のHPで分割して表示しているのをよく見かけます。 ”次の5件表示”とかのやつです。 あれはどういうロジックになっているのでしょうか? 例えば今DBに30件の顧客データがあるのですが、 ブラウザで1ページに10件表示するとして3ページにわたる場合どう作成すればいいのか教えて頂けないでしょうか?

    • ベストアンサー
    • PHP
  • 文字列を分割するクラスについて

    住所のメソッドでの開発についてご質問がございます。 仕様 住所の配列は全角80(半角160)に格納される。 住所地名の途中で分割しないようにする。 80桁すべてに文字は格納されているときは20桁の4等分にする。 スペースで分割をおこなうようにする。 例1  実行前  札幌市 ○区 北○○○○○ 00-0-0-00      実行後  札幌市 ○区 北○○○○○,00-0-0-00,,      例1の場合20桁ずつ分割を考えると14桁目のスペースを利用してカンマ区切りで4つに分割 例2 実行後  あああああ いいいいい ううううう ええ     実行後  あああああ いいいいい ううううう ええ,,,     例2の場合文字がちょうど20桁なのでちょうどカンマ区切りで4等分  例3  実行前   あああああ いいいい ううううううううううう えええええ 0-00-000       実行後   あああああ いいいい,ううううううううううう えええええ,0-00-000,      例3の場合20文字だと区切りだと、うの領域の途中になるため      11桁目のスペースを利用して分割      そしてそこから20桁目を区切ろうとして次の区切りたい場所が      番地の途中になるため実行後のように、えで区切り4等分にカンマ区切り と基本的に住所分割をスペースを利用して住所の途中や番地の途中で 区切らないでカンマ区切りの4等分にするアルゴリズムを考えています。 private void 住所漢字(String 住所漢字, String 住所カナ, String 住民票住所漢字,PrintWriter out) { //(1)分割する文字列を生成 String str = new String(住所漢字); //(2)文字列をsplitメソッドで分割 String[] strAry = str.split(",", 0); { str = 住所漢字; } for (int i=0; i<strAry.length; i++) { } out.print(str.substring(0,20)+","+ str.substring(20,40) +","+ str.substring(40,60)+","+ str.substring(60,80)); }      現在は単純に全角80桁の配列に対して 20桁ずつの4等分に実行されるだけのプログラムになってます。 上記の例のような住所分割のアルゴリズムを開発する際 StringTokenizer st = new StringTokenizerのクラスは開発に有効でしょうか? また有効である場合のソース実行例の等のアドバイス、もしくは ほかに文字を分割するための便利なクラスがございましたら ご教授ください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • SQLで複数列のデータを複数行にしたい

    以下のようなテーブルがあるとします。 column1 a,b,c <- カンマの数は最大50 b,d c,x SQLを実行し以下のような結果を返したいです。 以下の3つのことをすればできそうなのですが複数列を複数行にする方法がわかりません。 1.strtokenで50カラムに分割(カンマ分割) 2. 50カラムを1カラムにする 3.DISTINCTで重複データの削除 結果 a b c d x カンマの数が50あるので、かなり長いSQLになるのですが SELECT文50個をUNIONしてやればできるかなとも考えているのですが 何か良い方法はないでしょうか。 よろしくお願いします。

  • カンマ区切りCSVファイルをVBAで読み込みたい

    こんにちは。EXCELのVBAに詳しい方、どうか教えてください! カンマ区切りCSVファイルをEXCELに読み込みたいのですが、 CSVファイルのデータが金額のため、データ自体にもカンマが含まれていて、 金額のカンマでも分割されてEXCELのセルに収まってしまいます。 データの区切りのカンマと、金額のカンマを区別して読み込む良い方法はないでしょうか。 とても困っているので、お解りになる方どうかご回答をお願いいたします。 ・CSVファイルのデータ   1,000 , 2,000 , 1,500 , 3,000 , 1,000 , 2,500 , 2,000  ↑金額のカンマでデータが分割されないように読み込みたいのですが・・・