Ejemplo n.º 1
0
unsigned String::replace(regex& expr, const char *cp, unsigned flags)
{
#ifdef  HAVE_REGEX_H
    size_t cpl = 0;

    if(cp)
        cpl = strlen(cp);

    if(!str || str->len == 0)
        return 0;

    if(expr.match(str->text, flags))
        return 0;

    ssize_t adjust = 0;
    unsigned member = 0;

    while(member < expr.members()) {
        ssize_t tcl = expr.size(member);
        ssize_t offset = (expr.offset(member) + adjust);
        if(!tcl)
            break;

        ++member;
        cut(offset, tcl);
        if(cpl) {
            paste(offset, cp);
            adjust += (cpl - tcl);
        }
    }
    return member;
#else
    return 0;
#endif
}
Ejemplo n.º 2
0
void show_flags(const regex& rgx)
  { // extract and show flag values
  regex::flag_type flags = rgx.flags();
  if ((flags & regex::ECMAScript) == regex::ECMAScript)
    cout << "ECMAScript";
  else if ((flags & regex::basic) == regex::basic)
    cout << "basic";
  else if ((flags & regex::extended) == regex::extended)
    cout << "extended";
  else if ((flags & regex::grep) == regex::grep)
    cout << "grep";
  else if ((flags & regex::egrep) == regex::egrep)
    cout << "egrep";
  else if ((flags & regex::awk) == regex::awk)
    cout << "awk";
  else
    cout << "unknown grammar";
  if ((flags & regex::icase) == regex::icase)
    cout << " | icase";
  if ((flags & regex::collate) == regex::collate)
    cout << " | collate";
  if ((flags & regex::nosubs) == regex::nosubs)
    cout << " | nosubs";
  if ((flags & regex::optimize) == regex::optimize)
    cout << " | optimize";
  cout << '\n';
  }
Ejemplo n.º 3
0
		bool regex_match(const string & str, smatch & matches, const regex & re){
			Poco::RegularExpression::MatchVec pocomatches;
			auto ret = re.match( str, 0, pocomatches );
			matches.clear();
			for(const auto & m: pocomatches){
				matches.push_back(regmatch(str,m));
			}
			return ret;
		}