У меня есть строка, как эта:
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
,
Нет необходимости в регулярном выражении — все, что вам нужно сделать, это сканировать до первого не письма. Вот один из способов (обратите внимание, что мои навыки работы с 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_]*)
Других решений пока нет …