- PR -

csvデータを正規表現で抽出する

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2004-08-19 19:41
引用:

佐々木さんの書き込み (2004-08-19 17:23) より:

Javaにも「メタ文字を解釈しない文字列リテラル」とか「文字列リテラルのクォート記号を任意に選べる機能」が欲しいですねぇ。

正規表現が"\"だらけになっちゃうんですよね。


ですね。perlではすっきり書けて、しかも1行でOKなんですが。

その後、一旦パターンを当てはめる方法でやろうと試みましたが、エスケープ文字の
判定が正しく行われず玉砕しました。

[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2004-08-19 19:43 ]

[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2004-08-19 21:55 ]
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2004-08-19 20:16
引用:

がるがるさんの書き込み (2004-08-19 18:16) より:
¥(バックスラッシュ)でエスケープするパターンというのは、
Javaでは普通に行われてるパターンなんでしょうか?

JavaでのCSVで、"をあらわすのに上記のように"の二重であらわすと、
なにか問題とか起きるでしょうか?


がるがるさん、どもどもこんにちは。
¥でエスケープする記述はJavaでは良くでてきます。
二重 ”にする記述、たとえば
String str = ""ABC"";
とすると、""の隙間が文字列として認識されるので、こう書くと
空文字列 意味不明なABC 空文字列
となります。この場合の記述は
String str = "¥"ABC¥"";
ですね。(ということで、答えになってますでしょうか?)

[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2004-08-19 20:18 ]
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-08-19 20:51
Javaに限らず、C言語やUNIXなどのシェルでも「¥」が使われますが、
マイクロソフトは「""」です。

がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2004-08-20 15:48
どもです。返信ありがとうございます。

んと、多分根っこにあるのは、シュンさんのおっしゃってる通り
・そもそもCSVって標準化されていない(RFCが欲しい(笑))
・なんとなくExcelの挙動がデファクトスタンダードっぽい
ってあたりなのですが。

んと、一応念のため。通常の文字列挿入において¥でエスケープする
のは、Javaに限らず、PerlでもPHPでもCでもC++でもシェルでもSQLでも
一般的なので、そのあたりは理解しているです。
ただ、「"Java"で"CSV"を扱うとき」に、¥エスケープをするのが
標準なのかどうか、ってのに興味がありまして。

CSVって結構よく(特に私が知っている限りの現場では)使われる
フォーマット形式なので、このあたりって非常に興味がありまして。

まぁメインから外れた雑談なので、軽くとらえていただけると。
しかし…だれかRFC書かないかなぁ…
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-08-20 20:56
失礼しました。
ちなみに、SQLにエスケープシーケンスは無いですよ。SQLを扱える言語の方のエスケープシーケンスですから。
引用:

ただ、「"Java"で"CSV"を扱うとき」に、¥エスケープをするのが
標準なのかどうか、ってのに興味がありまして。


JavaでCSVっていうより、Javaから単にテキストファイルをリードライトしているだけですから、この場合、全然関係ない気がします。
なんなら「"」を使わないCSVファイルを扱えばいいだけですし。
引用:

しかし…だれかRFC書かないかなぁ…


それより一般のパワーユーザにXML普及してほしい。

スキルアップ/キャリアアップ(JOB@IT)