Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of boost. Click here for the latest Boost documentation.
PrevUpHomeNext

Struct mark_tag

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);

PrevUpHomeNext