• ベストアンサー

正規表現が読めない

諸般の事情でperlスクリプトに手を入れることになりました。 perlについてはまったくの素人であることに加えて、正規表現が読めません。お恥ずかしいのですが、下記を読み下していただけないでしょうか。 (変数のリスト) = map{/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); $tmpはカンマ区切りのテキストです。

  • TORYS
  • お礼率81% (49/60)
  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • luka3
  • ベストアンサー率74% (299/401)
回答No.1

http://www.din.or.jp/~ohzaki/perl.htm#CSV2Values たぶんこの方が作ったのではないでしょうか

TORYS
質問者

お礼

迅速なご回答ありがとうございます。 どうもそのままコピペしたようですねf^^;)。詳しい解説が載っているので参考にさせていただきます。

関連するQ&A

  • 正規表現

    変数$aのなかに変数$bが含まれていたらをperlの正規表現であらわすと どのようになるのでしょうか?if($a=~ /$b/)ではうまくいかないのですか?

    • ベストアンサー
    • Perl
  • 正規表現でカンマを対象にする方法

    フォームから入力された値をCSVにはき出しているため、 「,」(カンマ)を禁止文字としたいのですが、 正規表現で対象にすることは可能でしょうか? 「.」(ピリオド)なら  if($TEST1 =~ /\./) とすればよいと思うのですが、、、  if($TEST1 =~ /\,/) ではダメですよね。 正規表現で引っかけてアラートを出す予定なのですが、 if($TEST1 =~ /\,/){ print <<END; <script> alert(",(カンマ)を含んでいます"); </script> END &error; } 他のやり方で「,」(カンマ)を禁止文字にする方法でも構いません。 また、入力フォームは8つあるのですが($TEST1~$TEST8)、 まとめて「,」(カンマ)を禁止文字にすることはできますか? 開発環境:WindowsXP(TeraTerm使用) サーバー:HP-UX perlバージョン:5.6.1 以上、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 正規表現を使った文字列の抽出方法について

    正規表現を使った文字列の抽出方法について RHELを使っています。 テキストデータの中に、以下のようなデータが 百万行単位で並んでいます。(カンマ区切り、2列構成) 1, 1.24425 2, 3.25252 (中略) 13, 6.25365 14, 8,36222 (中略) 103633, 252525.0 最終的にやりたいことは2列目のデータのみの抽出です。 考え方として、正規表現で 「<任意の文字列の連続><カンマ>」という文字列を認識させ、 それを「空欄」で置換したいと考えています。 文字列の最後の文字をマッチさせる指定子が「$」という情報をWebで見つけたので まず、grepで見つけられるか以下のようにやってみたのですが、 grep -i ",$" test.txt $が環境変数と取られ、構文エラーとなってしまいます。 使い方がおかしいのでしょうか? ちなみに、うすうす感じている疑問として、「$」は文末にくるものしかマッチしなかったり しますでしょうか? カンマ区切りなので、表計算ソフトを使えなくもないですが、 行数がExcel2007の限界をよく超えるので、それ以外の方法で考えています。 アドバイスよろしくお願いいたします。

  • perlでの正規表現について教えてください。

    たとえば、 $A = 'aaa/bbb/ccc/ddd/eee/fff/ggg' というものがあったときにperlの正規表現でddd/のすぐ後の部分を抜き取って違う変数に入れたいのですが、それを正規表現で切り取りたいのですが、どうしたらいいかわからないです。 初歩的な質問ですが、お答えいただければ幸いです。 よろしくお願いします。

  • 正規表現の o

    Perl正規表現の =~ s/aaa/g の g が o だったのを見たことがあります。 o はどういう意味なんですか?

    • ベストアンサー
    • CGI
  • Perl正規表現s置換演算子の末尾にカンマについて

    お世話になります。 Perl正規表現プログラムで、 s置換演算子の末尾に、 カンマと丸カッコでスカラ変数を囲んで、 存在している箇所 たとえば、 s/あいうえお/($hensu = $&) =~ tr{ABC}{abc}, ($hensu) =~ s{123}{123}, ($hensu) /eg; のような正規表現であれば、 上記のtr置換演算子や、s置換演算子それぞれの末尾に、 「 , ($hensu) 」 として、カンマと丸カッコでスカラ変数を囲んで、 存在している箇所は、 どのような意味があるのでしょうか? 以上になります。 PS: ネット上や正規表現の本などを読んでも、 上記したような、 カンマと丸カッコでスカラ変数を囲んでいる パターンの解説を、 見つけられなかった為、 ご質問させていただきました。 ご存じの方がいらっしゃいましたら、 教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現

    お世話になります。 カンマ区切りのデータの中からA=○○○のデータを取り出す正規表現を教えてください。 データの例 A=1000,B=300,C=500,D=200,...... A=200,B=200,C=300,D120 からA=○○○を抽出。 一応やってみたのが、”A=.*,”で検索してみましたが、 A=.....D=....すべて抽出してしまいます。 以上よろしくお願いします。

  • 正規表現について

    正規表現につての質問です。 今テキストファイルに下記のような漢字と数字が並んでいます。 そこから、漢字一文字だけの行を抜き出してきたいのですが、うまくいきません。PerlとCygwinを使用しています。よろしくお願いします。 人584504122 情報542701982 商品510342870 日414551872 方347990908 者347069359 中339925319 表示330177395 的324961911 私323727263 検索291502623 見ル285226619 場合275698771 一256241900 利用253752129 年240881734 時239273060 前228762989 店225241510 登録224560617   ・   ・    ・ プログラム中身 #! /usr/bin/perl -w #テキストから指定した単語などとマッチすると、 #その単語を含んだ文を抜き出してくる。 while(<>){ s/ +//g; s/\s+//g; if(/^([亜-煕]|[一-龠]){1}[0-9]*/){ print; print "\n"; } }

  • 正規表現の使い方

    $input =~ s/[a-z][0-9]-[0-9]/ [a-z][0-9]-[0-9] /g; perl言語での正規表現についてです。 置換に関してなのですが、このような使い方はできないでしょうか?? [a-z][0-9]-[0-9]にヒットしたものの前と後ろにスペースを代入したいのですが、何かいいプログラミングはないでしょうか?

  • .htaccessの正規表現

    Perlの正規表現なら少しだけ知っています。 .htaccessの正規表現で、 <Files xx.gif> と <Files 'xx.gif'> は同じですか? <Files "xx.gif"> だと変数展開の動作をしようとするために上記の2つより多少重くなりますか? *.gifとerr.logを1つの<File>タグで記述する場合はどう記述すればよいですか?

専門家に質問してみよう