|
![]() ![]() ![]() ![]() ![]() | |
去年の10月3日に、Visual C++ 2010には、STLにregex(正規表現)ライブラリが入っていたことに気づき、現時点ではboost::regex側が使われていることが確定して、10ヶ月くらいそのことを忘れていました。 STLのregex (以後はstd::regexと呼ぶ)と、boost::regexのどちらを使っていくべきか、その機能の違いや、exe生成後のサイズの比較を行い、今後どちらを使っていこうか考えようとしていたのでした。 Visual Studio 2010に入っているstd::regex(tr1)と、最新のboost::regexを比べてみると、明確な違いとしては次の項目が挙がります。
いずれも、Visual Studio 2010に入っているstd::regexに関する比較になります。 別のバージョンや処理系になれば、exeファイルのサイズ比較結果やフラグの指定方法も変わってくると考えられます。 例えば、regex::icaseだけを指定した場合にマッチが行われない問題は、C++11までの規則に起因する問題であり、C++14の規則に従っているバージョンならばこの問題が起きないようです。 また、Visual Studio 2010よりも後のバージョンであれば、regex_constants::match_single_line(の逆)に相当する別の定数が定義されているそうです。 なお、他の処理系では、wregex (basic_regex<wchar_t>のこと) を使う場合、日本語が正しく取り扱えないことがあったそうですが、Visual Studio 2010では正しく扱えていました。 以上のことから、次のことが言えます。
現在、INASOFTで公開しているソフトウェアでboost::regexによる正規表現を用いているのは、次の4ソフトになります。
このうち、「いじくるつくーる」は、開発終了しているため検討の対象外となります。 「ListView to CSV」はリスト2番目に示したフラグを使用していないため、std::regexに切り替えることができます。 ちなみに、ListView to CSVのexeファイルサイズは、std::regexに切り替えることにより、32bit版で413KB→335KBに減少、64bit版で499KB→393KBに減少することが確認できたので、けっこう劇的なダイエット効果があるようです。 というわけで、近いうちにListView to CSVは、使用ライブラリの切り替えのための更新を行いたいと思います。 目次の表示: ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメール、フィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。 当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。 |
- 最近の更新 - |
|
3279309 (+0058)[+0505] Copyright© 2010-2025 INASOFT |