View source code
Display the source code in std/regex.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla 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 using
local clone.
std.regex.Regex/regex
- multiple declarations
Function regex
Compile regular expression pattern for the later execution.
auto regex(S, C)
(
const S[] patterns,
const(char)[] flags = ""
) @trusted
if (isSomeString!S);
auto regex(S)
(
S pattern,
const(char)[] flags = ""
) @trusted
if (isSomeString!S);
Returns
Regex
object that works on inputs having
the same character width as pattern
.
Parameters
Name | Description |
---|---|
pattern | A single regular expression to match. |
patterns | An array of regular expression strings.
The resulting Regex object will match any expression;
use whichPattern to know which. |
flags | The attributes (g, i, m, s and x accepted) |
Throws
RegexException
if there were any errors during compilation.
Example
void test(S)()
{
// multi-pattern regex example
S[] arr = [`([a-z]+):(\d+)`, `(\d+),\d+`];
auto multi = regex(arr); // multi regex
S str = "abc:43 12,34";
auto m = str .matchAll(multi);
writeln(m .front .whichPattern); // 1
writeln(m .front[1]); // "abc"
writeln(m .front[2]); // "43"
m .popFront();
writeln(m .front .whichPattern); // 2
writeln(m .front[1]); // "12"
}
import std .meta : AliasSeq;
static foreach (C; AliasSeq!(string, wstring, dstring))
// Test with const array of patterns - see https://issues.dlang.org/show_bug.cgi?id=20301
static foreach (S; AliasSeq!(C, const C, immutable C))
test!S();
Alias Regex
Regex
object holds regular expression pattern in compiled form.
alias Regex(Char)
= std .regex .internal .ir .Regex!Char;
Instances of this object are constructed via calls to regex
.
This is an intended form for caching and storage of frequently
used regular expressions.
Example
Test if this object doesn't contain any compiled pattern.
Regex!char r;
assert(r .empty);
r = regex(""); // Note: "" is a valid regex pattern.
assert(!r .empty);
Getting a range of all the named captures in the regex.
import std .range;
import std .algorithm;
auto re = regex(`(?P<name>\w+) = (?P<var>\d+)`);
auto nc = re .namedCaptures;
static assert(isRandomAccessRange!(typeof(nc)));
assert(!nc .empty);
assert(nc .length == 2);
assert(nc .equal(["name", "var"]));
assert(nc[0] == "name");
assert(nc[1..$] .equal(["var"]));
Authors
Dmitry Olshansky,
API and utility constructs are modeled after the original std
by Walter Bright and Andrei Alexandrescu.
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.