कोटलिन में रेगुलर एक्सप्रेशन: उदाहरणों के साथ पूर्ण गाइड
रेगुलर एक्सप्रेशन (regex) पैटर्न के अनुसार टेक्स्ट खोजने, निकालने और बदलने के लिए एक शक्तिशाली उपकरण है। कोटलिन में, रेगुलर के साथ काम Regex क्लास के माध्यम से कार्यान्वित किया जाता है, जो एक सुविधाजनक API और java.util.regex.Pattern की Java कार्यान्वयन के साथ पूर्ण संगतता प्रदान करता है। इस लेख में, हम स्पष्ट उदाहरणों के साथ कोटलिन में रेगुलर एक्सप्रेशन के उपयोग के सभी पहलुओं पर चर्चा करेंगे।
1. कोटलिन में Regex का निर्माण और बुनियादी उपयोग
कोटलिन में रेगुलर एक्सप्रेशन बनाने के दो मुख्य तरीके हैं:
Regexक्लास का कंस्ट्रक्टर — आप पैटर्न के साथ एक स्ट्रिंग पास करते हैं।.toRegex()एक्सटेंशन मेथड — इसे एक स्ट्रिंग पर कॉल किया जाता है।
निर्माण के उदाहरण:
// तरीका 1: कंस्ट्रक्टरval regex1 = Regex("\\\\d{3}-\\\\d{2}-\\\\d{4}")
// तरीका 2: toRegex()val regex2 = "\\\\d{3}-\\\\d{2}-\\\\d{4}".toRegex()
// फ़्लैग के साथ (केस-इनसेंसिटिव सर्च)val regex3 = Regex("hello", RegexOption.IGNORE_CASE)
// मल्टीलाइन मोडval regex4 = Regex("^start", RegexOption.MULTILINE)ध्यान दें: कोटलिन में, Java की तरह, बैकस्लैश को एस्केप करने के लिए डबल स्लैश \\\\ का उपयोग किया जाता है। यदि आप \\d लिखते हैं, तो आपको "\\\\d" लिखना होगा।
2. Regex के मुख्य फ़ंक्शन: जाँच, खोज, बदलाव
Regex क्लास स्ट्रिंग्स के साथ काम करने के लिए कई प्रमुख फ़ंक्शन प्रदान करता है।
2.1. पूर्ण मिलान की जाँच — matches()
matches() फ़ंक्शन true लौटाता है यदि पूरी स्ट्रिंग पैटर्न से पूरी तरह मेल खाती है।
val emailRegex = Regex("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}")
val email1 = "user@example.com"val email2 = "invalid-email"
println(emailRegex.matches(email1)) // trueprintln(emailRegex.matches(email2)) // false2.2. पहला मिलान खोजना — find()
पहला मिला हुआ मिलान MatchResult? ऑब्जेक्ट के रूप में लौटाता है (या यदि कुछ नहीं मिलता है तो null लौटाता है)।
val text = "मेरा फ़ोन: 123-45-6789 और 987-65-4321"val phoneRegex = Regex("\\\\d{3}-\\\\d{2}-\\\\d{4}")
val firstMatch = phoneRegex.find(text)if (firstMatch != null) { println("फ़ोन मिला: ${firstMatch.value}") // फ़ोन मिला: 123-45-6789 println("शुरुआत: ${firstMatch.range.first}") // शुरुआत: 10}2.3. सभी मिलान खोजना — findAll()
सभी गैर-अतिव्यापी मिलानों का Sequence<MatchResult> लौटाता है।
val text = "मूल्य: 100 रु., 250 रु., 50 रु."val priceRegex = Regex("\\\\d+")
val prices = priceRegex.findAll(text)prices.forEach { match -> println("मूल्य: ${match.value}")}// आउटपुट:// मूल्य: 100// मूल्य: 250// मूल्य: 502.4. पैटर्न के अनुसार बदलाव — replace()
replace() फ़ंक्शन सभी मिले हुए मिलानों को निर्दिष्ट स्ट्रिंग या लैम्ब्डा एक्सप्रेशन के परिणाम से बदल देता है।
val text = "मेरा ईमेल: john@mail.com और support@site.org"val emailRegex = Regex("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}")
// सरल बदलावval masked = emailRegex.replace(text, "[ईमेल छिपा हुआ]")println(masked) // मेरा ईमेल: [ईमेल छिपा हुआ] और [ईमेल छिपा हुआ]
// लैम्ब्डा के साथ बदलाव (डायनामिक)val replaced = emailRegex.replace(text) { match -> val local = match.value.split("@")[0] "${local.first()}***@***"}println(replaced) // मेरा ईमेल: j***@*** और s***@***2.5. स्ट्रिंग को विभाजित करना — split()
रेगुलर एक्सप्रेशन के मिलानों के अनुसार स्ट्रिंग को विभाजित करता है।
val text = "सेब,अंगूर;केला|संतरा"val separators = Regex("[,;|]")
val fruits = separators.split(text)println(fru