Rust:
Sử dụng biểu thức chính quy
Làm thế nào:
Rust sử dụng crate regex
cho các thao tác regex. Đầu tiên, thêm nó vào Cargo.toml
của bạn:
[dependencies]
regex = "1"
Sau đó, bạn có thể khớp chuỗi như sau:
use regex::Regex;
fn main() {
let re = Regex::new(r"^\d{4}-\d{2}-\d{2}$").unwrap();
let date = "2023-04-01";
println!("Liệu văn bản có khớp với mẫu ngày tháng? {}", re.is_match(date));
}
Đầu ra:
Liệu văn bản có khớp với mẫu ngày tháng? true
Đối với việc bắt các nhóm:
use regex::Regex;
fn main() {
let re = Regex::new(r"(\w+)@(\w+)\.(\w+)").unwrap();
let email = "[email protected]";
match re.captures(email) {
Some(caps) => {
println!("Người dùng: {}, Tên miền: {}, Phần mở rộng: {}", &caps[1], &caps[2], &caps[3]);
}
None => println!("Không tìm thấy kết quả."),
}
}
Đầu ra:
Người dùng: user, Tên miền: example, Phần mở rộng: com
Nghiên Cứu Sâu
Regex đã tồn tại từ những năm 1950, với nguồn gốc từ lý thuyết tự động và ngôn ngữ hình thức. Module regex
của Rust được xây dựng để tăng tốc độ và an toàn, tập trung vào việc biên dịch các mẫu regex hiệu quả tại thời gian chạy. Các phương án thay thế cho regex bao gồm các hàm chuỗi như find
, split
và replace
, phủ sóng các trường hợp sử dụng đơn giản hơn mà không cần mẫu. Regex trong Rust đặc biệt hiệu quả do được tối ưu hóa và biên dịch mẫu regex rộng rãi.
Xem Thêm
- Tài liệu crate
regex
: https://docs.rs/regex/ - Phần về regex trong sách Rust: https://doc.rust-lang.org/book/ch18-00-patterns.html
- Chương Biểu Thức Chính Quy của “Ngôn Ngữ Lập Trình Rust”: https://doc.rust-lang.org/stable/book/ch18-03-pattern-syntax.html