Kotlin में Regular Expressions: व्यावहारिक उदाहरणों के साथ

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

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

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

Kotlin में Regular Expressions: व्यावहारिक उदाहरणों के साथ

\n\n

Regular Expressions (regex) स्ट्रिंग्स के साथ काम करने का एक शक्तिशाली टूल है। Kotlin में, ये Java क्लासेस Pattern और Matcher पर आधारित हैं, लेकिन भाषा अपने स्वयं के सुविधाजनक एक्सटेंशन और सिंटैक्टिक शुगर भी जोड़ती है। इस लेख में, हम वास्तविक उदाहरणों के साथ Kotlin में Regular Expressions का उपयोग करना सीखेंगे: सरल खोज से लेकर रिप्लेसमेंट और स्ट्रिंग को विभाजित करने तक।

\n\n

सिंटैक्स की मूल बातें: निर्माण और कंपाइलेशन

\n\n

Kotlin में Regular Expression बनाने के दो तरीके हैं: Regex क्लास के माध्यम से या पैटर्न वाली स्ट्रिंग का उपयोग करके। पहला तरीका बेहतर है, क्योंकि यह अधिक मेथड प्रदान करता है।

\n\n
// तरीका 1: Regex क्लास के माध्यम से\nval regex = Regex("\\\\d+") // एक या अधिक अंक\n\n// तरीका 2: स्ट्रिंग के माध्यम से (जटिल एक्सप्रेशन के लिए अनुशंसित नहीं)\nval pattern = "\\\\d+".toRegex()
\n\n

डबल एस्केपिंग स्लैश पर ध्यान दें: \\\\d — यह Java/Kotlin के लिए एस्केपिंग है, ताकि स्ट्रिंग में \\d कैरेक्टर प्राप्त हो सके। सरलता के लिए, Kotlin raw स्ट्रिंग्स (ट्रिपल कोट्स """) को सपोर्ट करता है, जहां एस्केपिंग की आवश्यकता नहीं है:

\n\n
val regex = Regex("""\\d+""") // raw स्ट्रिंग — बैकस्लैश को डुप्लिकेट करने की जरूरत नहीं
\n\n

आप फ्लैग भी जोड़ सकते हैं, जैसे RegexOption.IGNORE_CASE:

\n\n
val regex = Regex("kotlin", RegexOption.IGNORE_CASE)
\n\n

मिलान खोजना और जांचना

\n\n

सबसे आम ऑपरेशन हैं: यह जांचना कि क्या स्ट्रिंग में पैटर्न के अनुसार कोई सबस्ट्रिंग है, और सभी मिलान ढूंढना।

\n\n

मिलान की उपस्थिति की जांच: containsMatchIn

\n\n
val text = "मेरा नंबर: 123-45-678"\nval digitRegex = Regex("""\\d+""")\n\nif (digitRegex.containsMatchIn(text)) {\n    println("टेक्स्ट में अंक हैं!")\n}
\n\n

पहला मिलान ढूंढना: find

\n\n
val result = digitRegex.find(text)\nprintln(result?.value) // आउटपुट: 123
\n\n

सभी मिलान ढूंढना: findAll

\n\n
val allMatches = digitRegex.findAll(text)\nallMatches.forEach { match ->\n    println("मिला: ${match.value}") // 123, 45, 678\n}
\n\n

मेथड findAll MatchResult ऑब्जेक्ट्स का एक सीक्वेंस लौटाता है। प्रत्येक ऑब्जेक्ट में न केवल मिलान (.value) होता है, बल्कि स्ट्रिंग में उसकी स्थिति (.range) भी होती है।

\n\n

कैप्चर ग्रुप्स के साथ काम करना

\n\n

कैप्चर ग्रुप्स पैटर्न के वे हिस्से होते हैं जो गोल ब्रैकेट में बंद होते हैं। ये डेटा के विशिष्ट टुकड़ों को निकालने की अनुमति देते हैं। उदाहरण के लिए, ईमेल को यूज़रनेम और डोमेन में विभाजित करना:

\n\n
val email = "user@example.com"\nval emailRegex = Regex("""(.+)@(.+)""")\nval matchResult = emailRegex.find(email)\n\nif (matchResult != null) {\n    val (username, domain) = matchResult.destructured\n    println("यूज़रनेम: $username") // user\n    println("डोमेन: $domain")      // example.com\n}
\n\n

destructured कंस्ट्रक्शन ग्रुप्स को वेरिएबल्स में आसानी से विभाजित करता है। यदि अधिक ग्रुप्स हैं, तो इंडेक्स द्वारा एक्सेस किया जा सकता है:

\n\n
val fullMatch = matchResult.value      // user@example.com\nval group1 = matchResult.groupValues[1] // user\nval group2 = matchResult.groupValues[2] // example.com
\n\n

नामांकित ग्रुप्स (Kotlin 1.7+)

\n\n

Kotlin 1.7 से शुरू करके, आप नामांकित ग्रुप्स का उपयोग कर सकते हैं:

\n\n
val namedRegex = Regex("""(?<name>\\w+)@(?<domain>\\w+\\.\\w+)""")\nval match = namedRegex.find("contact@kotlin.org")\nif (match != null) {\n    println(match.groups["name"]?.value)   // contact\n    println(match.groups["domain"]?.value) // kotlin.org\n}
\n\n

replace के साथ टेक्स्ट बदलना

\n\n

मेथड replace सभी मिलानों को एक नई स्ट्रिंग से बदलने की अनुमति देता है। रिप्लेसमेंट पैटर्न में कैप्चर ग्रुप्स को संदर्भित किया जा सकता है।

ब्लॉग

पुस्तक अनुशंसाएँ