उदाहरणों के साथ Swift में रेगुलर एक्सप्रेशन: व्यवहार में
रेगुलर एक्सप्रेशन (regex) टेक्स्ट डेटा के साथ काम करने के लिए एक शक्तिशाली उपकरण है। Swift में रेगुलर एक्सप्रेशन के साथ काम करने के लिए Foundation फ्रेमवर्क के NSRegularExpression वर्ग का उपयोग किया जाता है। इस लेख में, हम iOS और macOS अनुप्रयोगों के लिए Swift में रेगुलर एक्सप्रेशन के व्यावहारिक उपयोग के उदाहरणों पर चर्चा करेंगे: सरल खोज से लेकर जटिल मान्यता और टेक्स्ट प्रतिस्थापन तक।
Swift में NSRegularExpression के साथ मूल बातें
NSRegularExpression वर्ग रेगुलर एक्सप्रेशन के साथ काम करने के लिए सभी आवश्यक विधियाँ प्रदान करता है। मूल कार्यप्रणाली में तीन चरण शामिल हैं:
- रेगुलर एक्सप्रेशन पैटर्न ऑब्जेक्ट बनाना
- स्ट्रिंग पर पैटर्न लागू करना
- परिणामों (मिलान, प्रतिस्थापन) को संसाधित करना
रेगुलर एक्सप्रेशन बनाना
"Swift" शब्द खोजने के लिए एक सरल रेगुलर एक्सप्रेशन बनाने और लागू करने का तरीका यहां दिया गया है:
import Foundation
let text = "Swift और iOS विकास सीख रहे हैं"let pattern = "Swift"
do { let regex = try NSRegularExpression(pattern: pattern) let results = regex.matches(in: text, range: NSRange(text.startIndex..., in: text)) for match in results { if let range = Range(match.range, in: text) { print("मिला: \\(text[range])") } }} catch { print("रेगुलर एक्सप्रेशन में त्रुटि: \\(error.localizedDescription)")}Range रूपांतरण पर ध्यान दें - Swift स्ट्रिंग्स में स्थानों के साथ काम करने का यह मानक तरीका है। निष्पादन परिणाम: "मिला: Swift"।
व्यावहारिक उदाहरण 1: ईमेल पते खोजना
सबसे आम कार्यों में से एक टेक्स्ट से ईमेल पते निकालना है। एक उदाहरण देखें जो स्ट्रिंग में सभी ईमेल ढूंढेगा:
import Foundation
func findEmails(in text: String) -> [String] { let pattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}" var emails: [String] = [] do { let regex = try NSRegularExpression(pattern: pattern) let results = regex.matches(in: text, range: NSRange(text.startIndex..., in: text)) for match in results { if let range = Range(match.range, in: text) { emails.append(String(text[range])) } } } catch { print("त्रुटि: \\(error)") } return emails}
// उपयोग का उदाहरणlet sampleText = "संपर्क: support@example.com और admin@site.org"let foundEmails = findEmails(in: sampleText)print(foundEmails) // ["support@example.com", "admin@site.org"]यह पैटर्न ईमेल में अनुमत मानक वर्णों को ध्यान में रखता है और डोमेन भाग में डॉट की उपस्थिति की जाँच करता है। उत्पादन के लिए, सिरिलिक डोमेन के लिए समर्थन जोड़ा जा सकता है।
व्यावहारिक उदाहरण 2: फ़ोन नंबर मान्यता
इनपुट डेटा मान्यता किसी भी एप्लिकेशन का एक महत्वपूर्ण हिस्सा है। यहां बताया गया है कि +7 (XXX) XXX-XX-XX प्रारूप में रूसी फ़ोन नंबर कैसे जांचें:
import Foundation
func isValidPhoneNumber(_ phone: String) -> Bool { // रूसी नंबर के लिए पैटर्न: +7 (XXX) XXX-XX-XX let pattern = "^\\\\+7\\\\s?\\\\(?[0-9]{3}\\\\)?\\\\s?[0-9]{3}-?[0-9]{2}-?[0-9]{2}$" do { let regex = try NSRegularExpression(pattern: pattern) let range = NSRange(location: 0, length: phone.utf16.count) return regex.firstMatch(in: phone, range: range) != nil } catch { return false }}
// परीक्षणlet validNumbers = ["+7 (495) 123-45-67", "+74951234567", "+7 495 1234567"]let invalidNumbers = ["8 (495) 123-45-67", "+7 (495) 123-45-678", "abc"]
for number in validNumbers { print("\\(number): \\(isValidPhoneNumber(number))") // true}
for number in invalidNumbers { print("\\(number): \\(isValidPhoneNumber(number))") // false}पैटर्न एंकर का उपयोग करता है