• 締切済み

正規表現入門などを見て、CSVを抽出する正規表現を調べています。

正規表現入門などを見て、CSVを抽出する正規表現を調べています。 ("(?:[^"]|"")*"|[^,]*),  (?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*) などで、コロンの意味がわかりません。 どなたかわかる方、いらっしゃれば、お願いします。

  • T35UG
  • お礼率50% (1/2)

みんなの回答

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

前回も記載しましたが(「あなたが見たコードでどのオブジェクトを使用しているかでも変わります」)、 >コロンの意味は、出ていなかったので質問させて頂きました。 は、オブジェクトに従います。何のオブジェクトを使用していたかです。見ていたとされる、URLを見ると、 >System.Text.RegularExpressions.RegexOptions となっていますね。これは http://support.microsoft.com/kb/301264/ja http://msdn.microsoft.com/ja-jp/ff685638.aspx http://hodade.adam.ne.jp/seiki/page.php?chapter_7 http://msdn.microsoft.com/ja-jp/library/hs600312(v=VS.80).aspx http://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.regexoptions(VS.80).aspx http://msdn.microsoft.com/ja-jp/library/yd1hzczs.aspx http://msdn.microsoft.com/ja-jp/library/az24scfc(v=VS.100).aspx (全部リファレンスのリンクをたどってゆくとぶつかります) に載っているVisual Basic .NETの使い方ですね。つまりTextオブジェクトの「RegularExpressions」ですね。これはVBSやVBでも使用される「VBScript Regular Expressions 」と似たような物です。もう少しクラス構成、ランタイム ライブラリを勉強しましょう。 >'industr(y|ies)' 可能ですが、”?:”の構文と違うのは前回記載した内容の「一致した文字列を記憶することはありません」にあります。この意味は、サンプルを作って実際に行ってみるのが最もわかりやすいです。 >'industr(?:y|?:ies)' これは上記の回等と同じです。文法的には成り立ちますが、意味が違ってきます。y or iesではなくなってきます。   >'industr(y|?:ies)' これも上記と同じです。こんな質問をするより、小さなサンプルプログラムを作って、検索結果にどのように違ってくるか試す事をお勧めします。たぶん、それでないと次回同じような正規表現を作成する時も、他人に聞かないと分からないという状態になります。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

その入門書のリファレンスにちゃんと書いてありますが? もし書いてないのなら、だめな物を買ってしまった(見ている)のでしょう。 リファレンスしっかりとした物を見ましょう。逆に VB リファレンス で検索してください。リファレンスを活用しましょう。本家 http://msdn.microsoft.com/ja-jp/library/sh9ywfdk(VS.80).aspx 下記にもありますが、いろいろ手があり、あなたが見たコードでどのオブジェクトを使用しているかでも変わります。 http://hodade.adam.ne.jp/seiki/page.php?chapter_7 ただ、あまり変わらないので、例を挙げます。 (?:pattern) 「pattern に一致しますが、後で使用できるように、一致した文字列を記憶することはありません。この構文は、"or" 文字 (|) を使ってパターンの各部分を結合する場合に便利です。たとえば、'industr(?:y|ies)' は 'industry|industries' よりも効率的な正規表現です。」 のようなパターンの演算子として使われています。

T35UG
質問者

お礼

ご回答、ありがとう御座います。  「サルにもわかる正規表現入門」や  http://geekswithblogs.net/mwatson/archive/2004/09/04/10658.aspx  などを見ていました。  コロンの意味は、出ていなかったので質問させて頂きました。 教えて頂いたVBリファレンスにも正規表現の記載は発見できませんでした。  例を回答して頂いたので、何となくはわかったのですが、 例えば、'industr(?:y|ies)' は   'industr(y|ies)'     'industr(?:y|?:ies)'   'industr(y|?:ies)' と書くのと、結果が違いますか? それとも、こう言う書き方はありえませんか?

関連するQ&A

  • 正規表現でURLを抽出するには。

    正規表現でURLを抽出するには。 HTML内リンク先などのURLを正規表現で抽出したいのですが。 HTML内で表記されているURLはhttpやhttps以外にも相対URLなど様々な書き方が できるようですが、それらを抽出する正規表現パターンはどの様に書けばよいのでしょうか?

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

    お世話になります。 PHPでの正規表現に関する質問です。 使っている教本の中に、次のようなコードがあります。 $files = new FilesystemIterator('.'); $files = new RegexIterator($files, '/\.(?:txt|csv)$/i'); foreach ($files as $file) { echo $file->getRealPath() . '<br>'; } これは、スクリプトと同じフォルダーにあるファイルの中で、.txt と .csv の拡張子のついたものだけを選択して表示するために、正規表現を使っているのですが、この中の ?: という部分の意味が分かりません。いろいろと正規表現に関する記事をネットで調べてみましたが、: コロンをメタ文字として扱っているものは見たことがありません。この ?: の役割を教えてください。お願いします。 ちなみに、これを取り去ってもちゃんと期待通りの結果が出ます。

    • ベストアンサー
    • PHP
  • 正規表現について

    Perlの初心者です。 正規表現の指定方法がよくわかりません。 ディレクトリー内の該当するCSVファイルの抽出をしたいのですが、 "xyz20050105*.csv"に該当するデータすべてを抽出したい。 下記のように、詳細に指定して該当するCSVのファイル名を取得したいのですが、これだとディレクトリー内がすべて表示されてしまいます。 @FTPlist = grep ("$head$year$mon$mday*.csv", readdir(DIR)); どのように指定すればよいのでしょうか?

    • ベストアンサー
    • Perl
  • JavaScript 正規表現について

    こんにちは、趣味でプログラミングをしているものです。 さっそくですが質問させていただきます。 下の正規表現パターンの意味について教えていただけないでしょうか? 見えにくいですが、:(コロン)もついています。 var rgexp = /^[\],:{}\s]*$/; よろしくお願いします。

  • 正規表現

    質問させてください。 現在、ASP(VBScript)にて改修開発を行っているんですが、 そのコードに正規表現が使われていて、よく見ても意味がわかりません。 どうやらCSVを分割?してくれているようなのですが・・・ (""[^""]*(?:""""[^""]*"""")*[^""]*""|[^,]*)(?:,|$) どなたか解説していただけませんか? よろしくお願いします。

  • |。ってなんですか? 正規表現

    正規表現の学習中です。読んでいる本の中に次の式がありました。  (?<=^|。)[^。]+。 日本語の文章の中から一文を抽出するための正規表現です。  。以外の文字がダーッと連なった後に。が来る文字列 とのことです。  [^。]は。以外の文字  +はそれが1個以上ある ですから  [^。]+ は  。以外の文字が1個以上ある という意味です。 その後に。が付きますから、  [^。]+。 だけで  。以外の文字がダーッと連なった後に。が来る文字列 ということになります。 では  (?<=^|。) の意味は何でしょう。  (?<=なんたら) は後方参照を意味しますから、 ^|。 のすぐ後に [^。]+ が続くと言いたいのでしょうか。 だとすると  ^|。 が問題です。  ^もしくは。 という意味なら、^は正規表現で記号として使われている文字ですから、  \^|。 と表現されそうなものです。 それに、。は文末でしか利用されない文字ですから、これに注目して検索を行うというのは理解できますが、^は日本語でなんら特徴を持つ文字ではありません。  ^もしくは。 という理解は間違いでしょう。 それでは^を記号として考えるとして、その前後を[]で囲んでいないから、この^は文字列の先頭を表すのでしょうか。そうすると件の正規表現は  先頭の|。のすぐ後から。以外の文字が連なった後に。が来る文字列 という意味になります。日本語の一文を抽出する正規表現という解説にかなり近づいてはいます。 しかし  |。 とは一体何? |はorを意味する記号ですが、  何とか or 。 という意味でしょうか。 でも「何とか」は「何とか」なりに何か文字表現がなされていても良さそうですし、それに  先頭の「何とか」または。のすぐ後から・・・ という解釈は意味不明。  |。 はどのように解釈すべきなのでしょうか。 お手数をお掛けします。

    • ベストアンサー
    • Perl
  • 単語を抽出する正規表現

    単語を抽出する正規表現を教えてください。grepを使うと、「○○を含む行」がすべて抽出されますが、下記のように単語だけを抽出したいのですが、どうすればいいかご存知の方がいらっしゃいましたら、教えてください。 --- ABC DEF GHIJ AB CDEF GHIJK ABCDE FGH I JKL 上記からGH始まりの単語だけを抽出したいです。 1行目と2行目のGHIJとGHIJKの2つだけが結果として欲しいです。1行目と2行目全体が出てくるのではなくて。 Windowsでは、エディタは秀丸を使ってます。 Windowsで不可能なら、UNIX上で実施することも考えていますが、Windowsのエディタ上で実行できる正規表現の文などありましたら教えてください。

  • 抽出 正規表現 DOM?

    PHPの正規表現で、例えば <img src="画像ファイル名"...> のようにイメージタグのsrc部分の画像ファイル名を抽出させたいのですが、正規表現の記述の仕方がわかりません。 このようなイメージタグなのですが、imgがIMGだったり、src=画像ファイル名 のように""がなかったり、 alt, width, height, borderなど属性もありますので、正規表現で純粋に画像ファイル名を抽出するのは難しいと考えますが、ふと思ったのですが、DOM???を使えば簡単にできる?かなと思うだけでこれも実現方法がわかりません。 現在、PHP4.3を使っていますが可能でしょうか?

    • ベストアンサー
    • PHP
  • perl 正規表現 抽出

    perl の正規表現を用いて、文字列の抽出を行いたいのですがどのように 書けばいいのかわかりません。 実現したいことは 「Y:/フォルダ名/フォルダ名/ファイル名.拡張子」 というテキストに対して 「拡張子」のみを抽出することと 「ファイル名」のみを抽出することです。 パターンマッチや変換はなんとなくわかるのですが 抽出の仕方がよくわかりません。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • javascriptの正規表現でhtmlからmetaタグを抽出してを削

    javascriptの正規表現でhtmlからmetaタグを抽出してを削除 javascriptの正規表現でhtmlからmetaタグを抽出してを削除したいと 考えておりますが、正規表現でmetaの取り出し方がわかりません。 どなたかご教授ください。 よろしくお願いいたします。

専門家に質問してみよう