我有这样的字符串:
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
解决方案。
答案 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_]*)