View source code
Display the source code in std/regex.d from which thispage was generated on github.
Report a bug
If you spot a problem with this page, click here to create aBugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.Requires a signed-in GitHub account. This works well for small changes.If you'd like to make larger changes you may want to consider usinglocal clone.

Struct std.regex.Captures

Captures object contains submatches captured during a call to match or iteration over RegexMatch range.

struct Captures(R)
  
if (isSomeString!R);

First element of range is the whole match.

Properties

NameTypeDescription
back[get] RRange interface.
captures[get] autoA hook for compatibility with original std.regex.
empty[get] boolRange interface.
front[get] RRange interface.
hit[get] RSlice of matched portion of input.
length[get] size_tNumber of matches in this object.
post[get] RSlice of input immediately after the match.
pre[get] RSlice of input prior to the match.
whichPattern[get] intNumber of pattern matched counting, where 1 - the first pattern. Returns 0 on no match.

Methods

NameDescription
opCast () Explicit cast to bool. Useful as a shorthand for !(x.empty) in if and assert statements.
opIndex (i) Range interface.
opIndex (i) Lookup named submatch.
popBack () Range interface.
popFront () Range interface.

Example

import std.range.primitives : popFrontN;

auto c = matchFirst("@abc#", regex(`(\w)(\w)(\w)`));
assert(c.pre == "@"); // Part of input preceding match
assert(c.post == "#"); // Immediately after match
assert(c.hit == c[0] && c.hit == "abc"); // The whole match
writeln(c[2]); // "b"
writeln(c.front); // "abc"
c.popFront();
writeln(c.front); // "a"
writeln(c.back); // "c"
c.popBack();
writeln(c.back); // "b"
popFrontN(c, 2);
assert(c.empty);

assert(!matchFirst("nothing", "something"));

// Captures that are not matched will be null.
c = matchFirst("ac", regex(`a(b)?c`));
assert(c);
assert(!c[1]);

Authors

Dmitry Olshansky,

API and utility constructs are modeled after the original std.regex by Walter Bright and Andrei Alexandrescu.

License

Boost License 1.0.