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
มีฟังก์ชันการทำงานมากมายสำหรับงานจับคู่รูปแบบที่ซับซ้อนและการจัดการข้อความ.