示例#1
0
	void ASPVariableQuery::createHeadQueryValues(vector<string> queryVec)
	{
		vector<string> valuesToParse;
		for (auto queryString : queryVec)
		{
			auto vec = createHeadPredicates(queryString);
			for (auto s : vec)
			{
				valuesToParse.push_back(s);
			}
		}
		regex words_regex("[A-Z]+(\\w*)");
		for (auto value : valuesToParse)
		{
			size_t begin = value.find("(");
			size_t end = value.find(")");
			string tmp = value.substr(begin, end - begin);
			auto words_begin = sregex_iterator(tmp.begin(), tmp.end(), words_regex);
			auto words_end = sregex_iterator();
			while (words_begin != words_end)
			{
				smatch match = *words_begin;
				string match_str = match.str();
				tmp.replace(match.position(), match.length(), this->solver->WILDCARD_STRING);
				words_begin = sregex_iterator(tmp.begin(), tmp.end(), words_regex);
			}
			value = value.replace(begin, end - begin, tmp);
			stringstream ss;
			ss << this->queryProgramSection << "(" << value << ")";
			auto val = this->solver->parseValue(ss.str());
			this->headValues.emplace(val, vector<Clingo::Symbol>());
		}
	}
示例#2
0
文件: main.cpp 项目: CCJY/coliru
int main()
{
    const std::string s = "Quick brown fox.";
 
    std::regex words_regex("[^\\s]+");
    auto words_begin = 
        std::sregex_iterator(s.begin(), s.end(), words_regex);
    auto words_end = std::sregex_iterator();
 
    std::cout << "Found " 
              << std::distance(words_begin, words_end) 
              << " words:\n";
 
    for (std::sregex_iterator i = words_begin; i != words_end; ++i) {
        std::smatch match = *i;                                                 
        std::string match_str = match.str(); 
        std::cout << match_str << '\n';
    }   
}