diff --git a/parser.cpp b/parser.cpp index 536bbde..3c558c1 100644 --- a/parser.cpp +++ b/parser.cpp @@ -66,16 +66,19 @@ std::vector Parser::extractCategories(std::string content) const std::string Parser::extractCommand(std::string cmdname, std::string content) const { - std::string regstr = "(\\s|\\S)*\\[cmd\\:" + cmdname + "\\](.*?)\\[/cmd\\:" + cmdname + "\\](\\s|\\S)*"; - std::regex reg { regstr }; - std::smatch match; - if(std::regex_match(content, match, reg)) + std::string cmd = "[cmd:" + cmdname + "]"; + std::string cmdend = "[/cmd:" + cmdname + "]"; + + std::string_view view = content; + size_t pos = 0; + if((pos = view.find(cmd)) != std::string::npos) { - - if(match.size() > 1) + view.remove_prefix(pos); + view.remove_prefix(cmd.size()); + if((pos = view.find(cmdend)) != std::string::npos) { - return match.str(2); - + auto result = view.substr(0, pos); + return std::string { result }; } } return "";