2012-04-24 8 views
0

C#にRegexがあり、これを使用して任意の文字や文字範囲を削除することができます。Regex.Replace(str, "[^a-zA-Z0-9_.]+", "", RegexOptions.Compiled)など。しかし、C++のそれと同等のものは何ですか?私はBoostが正規表現ライブラリを持っていることを知っています。しかし、この操作のために、それは実行可能であり、どのように実行可能ですか? C++の文字列から文字を削除する最良の方法は何ですか?C++のRegex.Replaceに相当します。

+2

それのブーストは、あなたがその間違って行くことができないあなたはパフォーマンスについては本当に心配している場合は、私は[Boost.Xpressive](HTTPを使用し、 –

+2

を言いますwww.boost.org/libs/xpressive/)(具体的には、静的な正規表現)ではなくBoost.Regexです。 – ildjarn

答えて

0

おそらくboost::regex_replaceたい://:

#include <boost/regex.hpp> 
#include <string> 

const std::string input; 
boost::regex matcher("[^a-zA-Z0-9_.]+"); 
const std::string formatter(""); 

std::string output = boost::regex_replace(input, matcher, formatter); 
0

私はBoostを使用していて、すばやく簡単に使用できることがわかりました。例:もちろん

#include <boost/regex.hpp> 

bool detect_mypattern(const string& text) 
{ 
    // A specific regex pattern 
    static const boost::regex ep("[\\w\\s]{8}\\s{1}\\w{2}\\s{1}Test"); 
    return(boost::regex_match(text, ep)); 
} 

、あなたが正規表現の力を必要としない場合は、おそらく文字列のうち、スプライシング文字の速い仕事を行うことができます文字列関数がたくさんあります。

関連する問題