用于从字符串中获取类名的正则表达式

时间:2013-06-09 20:25:16

标签: c++ boost-regex

我有这样的字符串:

    parser = new ASTParser(in, encoding);

在我对这些字符串进行标记后,我得到了:

    ASTParser(in, encoding);

现在,我如何执行正则表达式才能获得ASTParser?

我尝试使用std::erase执行此操作:

    str.erase(std::remove_if(str.begin(), str.end(), isLetter), str.end());

但问题是我还得到了参数(ASTParserinencoding)而且我不想要这个。

另外,我非常感谢使用boost::regex解决方案。

1 个答案:

答案 0 :(得分:2)

不需要正则表达式 - 所有你需要做的就是扫描直到第一个非字母。这是一种方式(注意我的std :: string操作技巧有点生锈):

str.substr(0, std::distance(str.begin(), std::find_if_not(str.begin(), str.end(), isLetter));

或者,您可以使用这样的正则表达式:

([A-Za-z_][A-Za-z0-9_]*)