การใช้เรกุลาร์เอ็กเพรสชัน

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