C++ 用于从字符串中获取类名的正则表达式
我有这样一根绳子:C++ 用于从字符串中获取类名的正则表达式,c++,boost-regex,C++,Boost Regex,我有这样一根绳子: parser = new ASTParser(in, encoding); 在我标记这些字符串之后,我得到: ASTParser(in, encoding); 现在,我如何执行regex以仅获取ASTParser 我尝试使用std::erase: str.erase(std::remove_if(str.begin(), str.end(), isLetter), str.end()); 但问题是我也得到了参数(ASTParserinencodi
parser = new ASTParser(in, encoding);
在我标记这些字符串之后,我得到:
ASTParser(in, encoding);
现在,我如何执行regex以仅获取ASTParser
我尝试使用std::erase
:
str.erase(std::remove_if(str.begin(), str.end(), isLetter), str.end());
但问题是我也得到了参数(ASTParserinencoding
),我不想要这个
另外,我非常感谢使用boost::regex
的解决方案—您只需扫描到第一个非字母。这里有一种方法(注意我的std::string操作技能有点生疏):
或者,您可以使用如下正则表达式:
([A-Za-z_][A-Za-z0-9_]*)
对于这一点,您不需要正则表达式,只需停在(这也是一个解决方案,但可能有更多的情况,如:
ASTParser(in,encoding)
,ASTParser;
。所以,如果我找到空格、分号等,我可以停下来。或者是更好的通用解决方案?我不知道如何使用boost::regex,但是如果字符串中有ASTParser(in,encoding);
,regex([^\(]+)
应该能够通过捕获从第一个字符到看到(
)的所有内容来捕获它。
([A-Za-z_][A-Za-z0-9_]*)