STRUCT MARK_TAG(3)

NAME
boost::xpressive::mark_tag - Sub-match placeholder type, used to create named captures in static regexes.

SYNOPSIS

// In header: <boost/xpressive/regex_primitives.hpp>
struct mark_tag {
  // construct/copy/destruct
  mark_tag(int);
  // private static functions
  static unspecified make_tag(int);
};

DESCRIPTION

mark_tag is the type of the global sub-match placeholders s0, s1, etc.. You can use the mark_tag type to create your own sub-match placeholders with more meaningful names. This is roughly equivalent to the "named capture" feature of dynamic regular expressions.

To create a named sub-match placeholder, initialize it with a unique integer. The integer must only be unique within the regex in which the placeholder is used. Then you can use it within static regexes to created sub-matches by assigning a sub-expression to it, or to refer back to already created sub-matches.

     mark_tag number(1); // "number" is now equivalent to "s1"
     // Match a number, followed by a space and the same number again
     sregex rx = (number = +_d) >> ' ' >> number;

After a successful regex_match() or regex_search(), the sub-match placeholder can be used to index into the match_results<> object to retrieve the corresponding sub-match.

  mark_tag public construct/copy/destruct

    1.

    mark_tag(int mark_nbr);

    Initialize a mark_tag placeholder.

    Parameters:

        mark_nbr
            An integer that uniquely identifies this mark_tag within the static regexes in which this mark_tag will be used.

    Requires:
        mark_nbr > 0

  mark_tag private static functions

    1.

    static unspecified make_tag(int mark_nbr);