Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于从字符串中获取类名的正则表达式_C++_Boost Regex - Fatal编程技术网

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_]*)