РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
969 of 1245 menu

Статический Regex

Статический Regex в Rust - это способ создания регулярного выражения, который компилирует шаблон один раз и сохраняет результат в статической переменной. Для этого используется макрос regex из крейта regex совместно с std::sync::LazyLock или once_cell::sync::Lazy. Такой подход позволяет избежать повторной компиляции регулярного выражения при каждом вызове функции, что особенно важно в высоконагруженных участках кода. Параметром макроса regex выступает строковый литерал с шаблоном регулярного выражения.

Синтаксис

use regex::Regex; use std::sync::LazyLock; static RE: LazyLock<Regex> = LazyLock::new(|| Regex::new(r"pattern").unwrap());

Пример

Давайте создадим статический Regex для поиска чисел в строке и проверим его работу:

use regex::Regex; use std::sync::LazyLock; static RE: LazyLock<Regex> = LazyLock::new(|| Regex::new(r"\d+").unwrap()); fn main() { let res = RE.is_match("abc123"); println!("{}", res); }

Результат выполнения кода:

true

Пример

Давайте найдём все совпадения с помощью статического Regex:

use regex::Regex; use std::sync::LazyLock; static RE: LazyLock<Regex> = LazyLock::new(|| Regex::new(r"\d+").unwrap()); fn main() { let text = "abc123def456"; let res: Vec<&str> = RE.find_iter(text).map(|m| m.as_str()).collect(); println!("{:?}", res); }

Результат выполнения кода:

["123", "456"]

Пример

Давайте заменим все вхождения чисел на звёздочки:

use regex::Regex; use std::sync::LazyLock; static RE: LazyLock<Regex> = LazyLock::new(|| Regex::new(r"\d+").unwrap()); fn main() { let text = "abc123def456"; let res = RE.replace_all(text, "*"); println!("{}", res); }

Результат выполнения кода:

"abc*def*"

Смотрите также

  • класс Regex,
    который представляет скомпилированное регулярное выражение
  • метод new,
    который создаёт новое регулярное выражение из шаблона
  • метод is_match,
    который проверяет наличие совпадения в строке
  • метод find_iter,
    который возвращает итератор по всем совпадениям
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить