- ベストアンサー
正規表現 使う機会が多いのでしょうか?
正規表現とはデータベースを操作するにおいて 使う機会が多いのでしょうか? 私はエクセルVBAを勉強しているものですが 正規表現の知識は必要ですか? エクセルでも正規表現を使う機会は多いですか? (エクセルではVBAや関数が不要な単機能なデータしか扱いません)
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 > 正規表現とはデータベースを操作するにおいて > 使う機会が多いのでしょうか? "データベースを操作するにおいて"、は、 使う機会は少ないです。 オブジェクトとしては、RegExpではなくて ADOやDAO、場合によってはExcelの一般機能などがデータベースを操作する機能です。 データベースを操作するスクリプトとしては、正規表現ではなくて SQLなどのクエリになります。 ここでいう"データベース"が、どのようなものを指すのか解りませんが 規格の異なる"データベース"間でテーブルの移設をする場合などでは 希に、正規表現を用いた方が簡単な場合もあります。 > 私はエクセルVBAを勉強しているものですが > 正規表現の知識は必要ですか? こちらのサイトでVBAに関する質問への回答が数千件にのぼる方でも中には 一度も正規表現を使っていない方もいらっしゃいます。 必要かどうかを決めるのは、業務だったり、趣向だったり、 具体的な必要だったり、ですね。 その人次第なんだと思います。 VBAの力を付けたい、という意味でしたら、そろそろ中級というタイミングで 経験的知識として、一度は動くものを書いておいた方が好いかも知れません。 それによってコーディングの幅が拡がり引いては設計の質が高まります。 とりあえず、教則サイトで基本を学び、応用例に照らして、 正規表現を用いる必然性とかメリットとか、自分で手を動かして確かめながら、 覚えていくと好いと思います。 現実的な実践例を、そこここの質問掲示板などでチェックしてみて 「わざわざ、正規表現を使わなくても、、、」とか 「なるほど、正規表現の方が簡単」とか 「組み合わせるオブジェクト次第では非常に効率的」とか 自分なりに評価できるように慣れていけば、 自分にとっての正規表現の必要性が見えてくるのではないでしょうか。 > エクセルでも正規表現を使う機会は多いですか? > (エクセルではVBAや関数が不要な単機能なデータしか扱いません) 基本的にはエクセルとは、表計算アプリケーションで、 補助的にデータベース的な扱いをしたりテキストエディタ的な使い方も 一応できる、といったものですが、 この、一応、を本格的なものにする可能性としてVBAが備わっている ということになるんだと思います。 正規表現にも色々ありますが、基本的には、一連のテキストデータに対して 検索、抽出、置換を行うものです。 ツール本来の目的としてはエクセルは、テキストデータの為にあるものでは ありませんから、そういう意味では、使う機会は多くはないです。 例えばワードにはワードの正規表現があって、私個人は頻繁に使います。 エクセルやエクセルVBAの標準機能でも、ワイルドカードを用いた 検索、抽出、というのは使う機会は多いです。 これも広い意味で正規表現と呼ぶなら使う機会は多い ということになるかも知れません。 例えば、 For Each r In Range("B2:E51") If r.Value Like "*#-#*" Then ' 処理 End if Next それぞれのセルの値の中に、"数字""ハイフン""数字"という 3文字の連続が含まれるなら、処理。 これで、 hogehoge123-456piyo 123-456 のようなテキストデータを抽出するような処理はよくあります。 でもこれを発展させて、 "数字""ハイフン""数字"という連続を "数字""カンマ""数字"という連続に 正確に置換したい、ということになると きちんと正規表現を勉強しておけば良かった、 ということになるかも知れません。 エクセルVBAの範疇で正規表現というと大抵は VBScript Regular Expressions のことを指すのだと思います。 ひとつ基本を覚えれば色々な正規表現に対して応用力は付くと思います。 結論めいたことを書くとしたら、覚えておいて決して損はない、という感じです。 ただ、具体的なニーズに則して覚えようとしないと 身に付かないでしょうし、きっと退屈だと思います。 どうでしょう、これを読んでみてやってみよう、と思ったなら、 具体的なニーズに触れ易い質問掲示板をロムしてみること が役に立つかも知れません。 今は必要なさそうと感じたなら、後回しにしても構わないと思います。 感じたままに決めちゃっていいと思いますけれども。 以上です。
お礼
ありがとうございました。