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

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