今はもうない読んだ。まあ、いわゆるひとつの「やられた」。いつものことですが。
萌絵みたいな女性がいたら、一度ぎゃふんと言わされてみたい。
C++で正規表現。
boostとか使えばできますが、boostって結構でかいって言うか、ちょっと正規表現使いたいだけなのにboostの諸々を入れるのは面倒、ということはあるんじゃないかと思います。
で、便利じゃないかと思ってるのがGRETAです。
(2010/05/20 ↑消えたっぽい。とりあえずこっち。)
VCで使うという条件で、商用利用もフリーで可だったと思われるライブラリです。
簡単な使い方だけ示しておきます。(要望があれば多少詳しく説明します。)
#include < iostream >
#include < string >
#include "regexpr2.h"
int main(int argc, char *argv[]) {
regex::match_results results; // 結果格納用変数
string str("abcdefg12345hijk"); // 検索対象文字列
regex::rpattern pat("\\d+(\\w+)"); // 正規表現。\\は2個要るよ!
regex::match_results::backref_type br = pat.match( str, results ); // マッチ。brはマッチした部分が入る。br=="12345hijk"
std::cout << br << std::endl; // 12345hjik
regex::match_results::backref_vector all_br = results.all_backrefs(); // 後方参照をするためのvector。
std::cout << all_br[0] << std::endl; // 12345hjik
std::cout << all_br[1] << std::endl; // hjik
regex::rpattern subst("\\d+", "zzzz", regex::GLOBAL); // 置換定義。置換前、置換後、パラメータ。
regex::subst_results substitute_results;
subst.substitute(str, substitute_results);
std::cout << str << std::endl; // abcdefgzzzzhijk
return 0;
}
wstringを使いたい場合はbasic_rpatternなどがあります。
置換はパラメータをいろいろ与えることで、全部置換とか最初の一個とか指定できます。
また、置換だけでなくsplitとかもあります。
注意事項としては、GRETAは完全なテンプレートライブラリというわけではなく、regexpr2.cppとsyntax2.cppをコンパイルしてリンクする必要があります。
以上
VC6.0で利用できる商用利用可の正規表現ライブラリを探していて、このページにたどり着きました。
早速GRETAを探してDLしましたが、添付のライセンスを見る限りでは、お金を払わない限り、商用利用は不可と読めます。
(会社の外国語専攻の奴に訳してもらいましたが、不完全かも知れません)
昔のソフトの手直しで正規表現をぶち込むことになりましたが、商用利用できる適当なものがなかなかないですね。
VS-FlexStringを検討しましたが、グループ”()”やor”|”が使えないため挫折しました。
商用利用不可でしたか。
今ダウンロードできるものは、確かにそう書いてあるように思いますね・・・。
ちょっと確認してみます。
どうもです。
昨日はJre.dllを試しに動作させてみました。
現在、Boost Regexに挑戦しています。
しかしBoostのほうはでかいですね。
正規表現だけビルドするのにどんだけ時間かかるねんっ!って感じでした。(^^;
>kobayashiさん
私が商用利用可といっていた根拠は,下記ページを見ていただくと分かると思います.
ただ,GotDotNetが閉鎖してしまったので,今はどうなるんでしょうね・・・.
http://web.archive.org/web/20080424041153/http://research.microsoft.com/projects/greta/
(以下の部分↓
New! GRETA is now available free for commercial use as part of Visual C++ PowerTools. You can find it on GotDotNet (just look for PowerTools).
)
コスミーさん
調べて下さってありがとう御座います。
感謝します。
>ただ,GotDotNetが閉鎖してしまったので,今はどうなるんでしょうね・・・.
商用に利用するにはちょっと不安ですね。
GRETA、軽くて良さそうだったのですが、やめておこうと思います。
ありがとう御座いました。
ちなみにBoostRegexのほうは動作させることができました。
最新の1.40.0はVC6.0でのビルドでエラーがでますので古いバージョンに遡って使っています。
解決されたようで,よかったです.
Power Toolsがどこかに引き継がれているはず,とは思うんですけどねえ.
ちなみにboostでしたらboost:regex以外にboost::xpressiveというのがあって,GRETAと作者が同じだったりします(確か).テンプレートオンリーという面白い正規表現ライブラリになっています.
Everything is very open with ɑ precise explanatiоn of the issues.
It was reaⅼly informatіve. Ⲩour site is very helpful. Thanks for
sharing!