search_result Parser::search(string expression, string target) { setRegEx(expression); if (target.empty()) target = source; search_result res; smatch match; while (!target.empty() && regex_search(target, match, exp)) { vector<string> tmp; for (string x:match) tmp.push_back(x); res.push_back(tmp); target = match.suffix().str(); //cout << "DEBUG: " << target << endl; } return res; }
bool Parser::match(string expression, string *ptarget, smatch *res) { setRegEx(expression); string target; if (ptarget == 0) target = source; else target = *ptarget; //cout << "STR: " << target << endl; bool ret; if (res != 0) ret = regex_search(target, *res, exp); else ret = regex_search(target, exp); if (ret) return ret; return false; }
string Parser::replace(string expression, string replacement, string target) { string *tmp; setRegEx(expression); if (target.empty()) tmp = &source; else tmp = ⌖ try { *tmp = regex_replace(*tmp, exp, replacement); } catch (...) { cout << "ERROR: replace failed." << endl; return 0; } return target; }
bool DigestionEnzyme::setValueFromFile(const String& key, const String& value) { if (key.hasSuffix(":Name")) { setName(value); return true; } if (key.hasSuffix(":RegEx")) { setRegEx(value); return true; } if (key.hasSuffix(":RegExDescription")) { setRegExDescription(value); return true; } if (key.hasSubstring(":Synonyms:")) { addSynonym(value); return true; } return false; }