- 締切済み
正規表現入門などを見て、CSVを抽出する正規表現を調べています。
正規表現入門などを見て、CSVを抽出する正規表現を調べています。 ("(?:[^"]|"")*"|[^,]*), (?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*) などで、コロンの意味がわかりません。 どなたかわかる方、いらっしゃれば、お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 0909union
- ベストアンサー率39% (325/818)
前回も記載しましたが(「あなたが見たコードでどのオブジェクトを使用しているかでも変わります」)、 >コロンの意味は、出ていなかったので質問させて頂きました。 は、オブジェクトに従います。何のオブジェクトを使用していたかです。見ていたとされる、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)
その入門書のリファレンスにちゃんと書いてありますが? もし書いてないのなら、だめな物を買ってしまった(見ている)のでしょう。 リファレンスしっかりとした物を見ましょう。逆に 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' よりも効率的な正規表現です。」 のようなパターンの演算子として使われています。
お礼
ご回答、ありがとう御座います。 「サルにもわかる正規表現入門」や http://geekswithblogs.net/mwatson/archive/2004/09/04/10658.aspx などを見ていました。 コロンの意味は、出ていなかったので質問させて頂きました。 教えて頂いたVBリファレンスにも正規表現の記載は発見できませんでした。 例を回答して頂いたので、何となくはわかったのですが、 例えば、'industr(?:y|ies)' は 'industr(y|ies)' 'industr(?:y|?:ies)' 'industr(y|?:ies)' と書くのと、結果が違いますか? それとも、こう言う書き方はありえませんか?