Rust के लिए regex: पूर्ण गाइड उदाहरण सहित

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust के लिए regex लाइब्रेरी: पूर्ण गाइड

1. यह क्या है और क्यों ज़रूरी है

regex लाइब्रेरी Rust भाषा में रेगुलर एक्सप्रेशन के साथ काम करने का सबसे मानक और लोकप्रिय टूल है। यह पैटर्न के आधार पर टेक्स्ट को खोजने, निकालने और बदलने के लिए एक शक्तिशाली, सुरक्षित और हाई-परफॉर्मेंस इंजन प्रदान करती है। कई अन्य इम्प्लीमेंटेशन के विपरीत, Rust में regex को मेमोरी सुरक्षा (memory safety) और अनडिफाइंड बिहेवियर (undefined behavior) की अनुपस्थिति पर ध्यान केंद्रित करके डिज़ाइन किया गया है, जो सिस्टम प्रोग्रामिंग के लिए बेहद महत्वपूर्ण है।

यह क्यों ज़रूरी है? रेगुलर एक्सप्रेशन टेक्स्ट पैटर्न का वर्णन करने के लिए एक सार्वभौमिक भाषा है। इसकी मदद से आप कई तरह के काम कर सकते हैं: ईमेल और URL की वैलिडेशन, लॉग पार्स करना, HTML/JSON से डेटा निकालना, कोड में खोज और बदलाव, यूज़र इनपुट को पार्स करना और भी बहुत कुछ। regex लाइब्रेरी यह सब तेज़ी और विश्वसनीयता से करती है। यह ऑटोमेटा-आधारित एल्गोरिदम (Thompson NFA) का उपयोग करती है, जो इनपुट स्ट्रिंग की लंबाई के सापेक्ष लीनियर टाइम में एक्ज़ीक्यूशन की गारंटी देता है, जो कुछ अन्य इंजनों (जैसे PCRE या Python's re) में पाए जाने वाले "कैटास्ट्रोफिक बैकट्रैकिंग" से बचाता है।

लाइब्रेरी की मुख्य विशेषताएं: रेगुलर एक्सप्रेशन सिंटैक्स का पूर्ण समर्थन (एंकर, क्वांटिफायर, ग्रुप, lookahead/lookbehind, Unicode), मनमानी बाइट सीक्वेंस के साथ काम करना, एक बार एक्सप्रेशन को कंपाइल करके बार-बार उपयोग करने की क्षमता, और सभी मैचों को खोजने के लिए इटरेटर का समर्थन। यह लाइब्रेरी Rust इकोसिस्टम का हिस्सा है और कम्युनिटी द्वारा सक्रिय रूप से मेंटेन की जाती है।

2. इंस्टॉलेशन

regex लाइब्रेरी को इंस्टॉल करने के लिए cargo पैकेज मैनेजर का उपयोग किया जाता है, जो Rust के साथ आता है। आपको अपने प्रोजेक्ट के Cargo.toml फ़ाइल में डिपेंडेंसी जोड़नी होगी।

टर्मिनल के माध्यम से जोड़ने का सटीक कमांड:

cargo add regex

या, Cargo.toml फ़ाइल के [dependencies] सेक्शन में मैन्युअली जोड़ें:

[dependencies]
regex = "1"

इसके बाद, लाइब्रेरी को डाउनलोड और कंपाइल करने के लिए cargo build चलाएँ। वर्जन "1" का मतलब है कि 1.x सीरीज़ का नवीनतम स्थिर वर्जन उपयोग किया जाएगा।

3. क्विक स्टार्ट — न्यूनतम काम करने वाला उदाहरण

चलिए एक बहुत ही सरल प्रोग्राम लिखते हैं जो जाँचता है कि क्या स्ट्रिंग में "hello" शब्द है (केस-इनसेंसिटिव)।

use regex::Regex;

fn main() {
    // रेगुलर एक्सप्रेशन कंपाइल करें
    // (?i) — फ्लैग जो केस सेंसिटिविटी को बंद करता है
    let re = Regex::new(r"(?i)hello").unwrap();

    // खोजने के लिए स्ट्रिंग
    let text = "Hello, world!";

    // जाँचें कि क्या मैच है
    if re.is_match(text) {
        println!("मैच मिल गया!");
    } else {
        println!("कोई मैच नहीं मिला।");
    }
}

यह कोड आउटपुट देगा: मैच मिल गया!। ध्यान दें कि .unwrap() का उपयोग सरलता के लिए किया गया है; वास्तविक कोड में रेगुलर एक्सप्रेशन कंपाइलेशन एरर (जैसे, अगर पैटर्न गलत है) को हैंडल करना चाहिए।

4. मुख्य मेथड्स

नीचे regex लाइब्रेरी के प्रमुख मेथड्स और फंक्शन्स दिए गए हैं। सभी उदाहरणों में मान लें कि आपने use regex::Regex; इम्पोर्ट किया है।

4.1. Regex::new(pattern: &str) -> Result<Regex, Error>

यह क्या करता है: स्ट्रिंग pattern को एक रेगुलर एक्सप्रेशन में कंपाइल करता है। सिंटैक्स में गलती होने पर इसे हैंडल करने के लिए Result रिटर्न करता है।

let re = Regex::new(r"^\d{3}-\d{2}-\d{4}$").expect("गलत regex");
// re अब उपयोग के लिए तैयार है

4.2. is_match(&self, text: &str) -> bool

यह क्या करता है: जाँचता है कि क्या

अनुशंसाएँ