Idiomatic D. Регулярные выражения [перевод]

Сегодня, вас ждет описание полезнейших идиом для обработки неструктурированных текстов (и не только) — описание работы с регулярными выражениями в D…

Процедуры работы с регулярными выражениями, вы можете найти в модуле std.regex стандартной библиотеки.

Вот простой пример применения регулярных выражений:

import std.regex;
import std.stdio;

void main(string[] args)
{
    auto re = regex(`My name is (\w+)\. I work for ([A-Za-z ]+)\.`);

    string input = "My name is Kobayashi. I work for Keyser Soze.";

    if (auto captures = matchFirst(input, re))
    {
        // Элемент capture[0] соответствует всей строке
        writefln("First capture = %s", captures[1]);
        writefln("2nd capture   = %s", captures[2]);
    }
}

Если вместо regex использовать ctRegex, то регулярное выражение будет построено на стадии компиляции, что ускорит работу процедуры сопоставления за счет некоторого увеличения времени компиляции программы.Таким образом, за счет вычислений (в частности, сборки регулярного выражения) на стадии компиляции достигается ускорение во время исполнения (поиск по образцу станет более быстрым, поскольку не будет потрачено время на создание регулярного выражения для сопоставления).

auto re = ctRegex!(`My name is (\w+)\. I work for ([A-Za-z ]+)\.`); // будет построено во время компиляции

Добавить комментарий