Swift Academy · पाठ

कैप्चरिंग समूह

मिलानों से सबस्ट्रिंग निकालिए।

पाठ 2, कुल 4 में से13 चरण

कैप्चरिंग समूह, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

कैप्चरिंग समूह

रेगेक्स में parentheses capturing groups बनाते हैं। हर group उस substring को याद रखता है जिससे उसका मिलान हुआ, इसलिए आप बड़े match से संरचित हिस्से निकाल सकते हैं।

एकल कैप्चर

Pattern के किसी हिस्से को () में रखने से वह capture हो जाता है। match output एक tuple बन जाता है: पहले पूरा match, फिर प्रत्येक capture।

if let m = "v2".firstMatch(of: /v(\d+)/) {
    print("Whole: \(m.0)")
    print("Group: \(m.1)")
}

एकाधिक कैप्चर

Parentheses की हर जोड़ी output tuple में बाएँ से दाएँ क्रम में एक और element जोड़ती है।

if let m = "2024-05-30".wholeMatch(of: /(\d{4})-(\d{2})-(\d{2})/) {
    print("Year: \(m.1)")
    print("Month: \(m.2)")
    print("Day: \(m.3)")
}

पूरा Match .0 है

Output के element .0 में हमेशा पूरा matched text होता है। Captures .1 से शुरू होते हैं।

if let m = "key=value".wholeMatch(of: /(\w+)=(\w+)/) {
    print("Full: \(m.0)")
    print("Key: \(m.1), Value: \(m.2)")
}

Captures Substrings होते हैं

डिफ़ॉल्ट रूप से captures Substring मान होते हैं, जो मूल string के भीतर के हिस्से की ओर संकेत करते हैं। यदि आपको उन्हें सुरक्षित रखना हो, तो String(...) से बदलें।

if let m = "abc123".firstMatch(of: /([a-z]+)(\d+)/) {
    let letters = String(m.1)
    let numbers = String(m.2)
    print(letters, numbers)
}

वैकल्पिक Captures

यदि कोई group वैकल्पिक हो, यानी उसके बाद ? हो, तो match में शामिल न होने पर उसका capture nil हो सकता है।

if let m = "color".wholeMatch(of: /colou?(r)/) {
    print("Captured: \(m.1)")
}

नामित Captures

आप (?<name>...) से किसी group को नाम दे सकते हैं और उसे नामित output के माध्यम से पढ़ सकते हैं। यह numeric indices की अपेक्षा अधिक स्पष्ट होता है।

let re = /(?<area>\d{3})-(?<line>\d{4})/
if let m = "555-1234".wholeMatch(of: re) {
    print("Area: \(m.area)")
    print("Line: \(m.line)")
}

Captures पर पुनरावृत्ति

एक साथ कई matches से संरचित data निकालने के लिए captures को matches(of:) के साथ मिलाएँ।

let log = "a=1 b=2 c=3"
for m in log.matches(of: /(\w+)=(\d+)/) {
    print("\(m.1) -> \(m.2)")
}

नेस्टेड Groups

Groups एक-दूसरे के भीतर हो सकते हैं। बाहरी group पूरे हिस्से को capture करता है और आंतरिक groups उसके भागों को capture करते हैं। Numbering opening parentheses के क्रम का पालन करती है।

if let m = "12:30".wholeMatch(of: /((\d+):(\d+))/) {
    print("All: \(m.1)")
    print("H: \(m.2), M: \(m.3)")
}

Non-Capturing Groups

बिना capture किए grouping करने के लिए (?:...) का उपयोग करें। यह तब उपयोगी है जब आपको केवल मात्रा-निर्धारक के लिए grouping चाहिए और tuple में अतिरिक्त element नहीं चाहिए।

if let m = "abab".wholeMatch(of: /(?:ab)+/) {
    print("Matched: \(m.0)")
}

एक Parser बनाना

Captures raw text को typed values में बदल देते हैं। यहाँ हम coordinate string को integers में parse करेंगे।

func parsePoint(_ s: String) -> (Int, Int)? {
    guard let m = s.wholeMatch(of: /(\d+),(\d+)/),
          let x = Int(m.1), let y = Int(m.2) else { return nil }
    return (x, y)
}
print(parsePoint("3,7") ?? "nil")

त्वरित जाँच

Pattern /(\d{4})-(\d{2})/ से "2024-05" का मिलान करने पर m.2 क्या होगा?

पुनरावलोकन

Parentheses capturing groups बनाते हैं, जिन्हें एक tuple के रूप में access किया जा सकता है, जहाँ .0 पूरा match और .1, .2... captures होते हैं। आपने named, optional, nested और non-capturing groups देखे। अगली बार आप RegexBuilder की सहायता से पठनीय Swift code से regexes बनाएँगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “कैप्चरिंग समूह” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कैप्चरिंग समूह” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कैप्चरिंग समूह” में मैं क्या सीखूँगा?

मिलानों से सबस्ट्रिंग निकालिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“कैप्चरिंग समूह” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Regex लिटरल और मिलान
  2. कैप्चरिंग समूह
  3. RegexBuilder DSL
  4. पाठ बदलना और विभाजित करना
← Swift Academy पर वापस जाएँ