相当于C ++中的Regex.Replace

时间:2012-04-24 15:30:01

标签: c++ gcc boost

c#中有正则表达式,可用于删除某些任意字符或字符范围,如Regex.Replace(str, "[^a-zA-Z0-9_.]+", "", RegexOptions.Compiled)。但是,与C ++相同的是什么呢?我知道Boost里面有一个正则表达式库。但是对于这个操作,它是否可行并且性能如何?在c ++中从字符串中删除字符的最佳和快捷方法是什么?

2 个答案:

答案 0 :(得分: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) );
}

当然,如果你不需要正则表达式的强大功能,那么有很多字符串函数可以更快地将字符拼接成字符串。

答案 1 :(得分: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);