Rust:
Використання регулярних виразів
Як це зробити:
Бібліотека regex
у Rust є кращим вибором для роботи з регулярними виразами. Щоб її використати, спочатку вам потрібно додати її до свого Cargo.toml
:
[dependencies]
regex = "1"
Тоді ви можете почати реалізовувати функціональність regex у вашому коді на Rust. Ось як виконати деякі поширені операції:
Пошук збігу зі шаблоном у рядку
use regex::Regex;
fn main() {
let re = Regex::new(r"^\d{4}-\d{2}-\d{2}$").unwrap();
let date = "2023-04-15";
println!("Чи відповідає текст шаблону дати? {}", re.is_match(date));
// Вивід: Чи відповідає текст шаблону дати? true
}
Пошук та доступ до збігів
use regex::Regex;
fn main() {
let text = "Rust 2023, C++ 2022, Python 2021";
let re = Regex::new(r"\b(\w+)\s(\d{4})").unwrap();
for cap in re.captures_iter(text) {
println!("Мова: {}, Рік: {}", &cap[1], &cap[2]);
}
// Вивід:
// Мова: Rust, Рік: 2023
// Мова: C++, Рік: 2022
// Мова: Python, Рік: 2021
}
Заміна тексту
use regex::Regex;
fn main() {
let re = Regex::new(r"\b(\w+)\s(\d{4})").unwrap();
let text = "Rust 2023, C++ 2022, Python 2021";
let replaced = re.replace_all(text, "$1 було оновлено в $2");
println!("Оновлений текст: {}", replaced);
// Вивід: Оновлений текст: Rust було оновлено в 2023, C++ було оновлено в 2022, Python було оновлено в 2021
}
Розбиття тексту за допомогою Regex
use regex::Regex;
fn main() {
let re = Regex::new(r"\W+").unwrap(); // розбити за будь-яким несловесним символом
let text = "Rust-C++-Python-Go";
let fields: Vec<&str> = re.split(text).collect();
for field in fields {
println!("Мова: {}", field);
}
// Вивід:
// Мова: Rust
// Мова: C++
// Мова: Python
// Мова: Go
}
Ці приклади надають базове керівництво для початку роботи з регулярними виразами у Rust. Коли ваши вимоги стають більш складними, крейт regex
пропонує багатий функціонал для складного пошуку за шаблонами та завдань маніпуляції текстом.