Expressions régulières en Kotlin : guide complet pour débutants
\n\nLes expressions régulières (regex) sont un outil puissant pour rechercher, remplacer et valider des chaînes selon un motif. En Kotlin, le travail avec les expressions régulières est implémenté via la classe Regex, qui fournit des méthodes pratiques pour le traitement de texte. Dans cet article, nous allons explorer les bases des expressions régulières en Kotlin avec des exemples concrets pour vous aider à maîtriser rapidement cet outil.
Qu'est-ce qu'une expression régulière ?
\n\nUne expression régulière est une séquence de caractères définissant un motif de recherche dans un texte. Par exemple, le motif \\\\d{3} trouve trois chiffres consécutifs, tandis que [A-Z]+ trouve une ou plusieurs lettres majuscules.
En Kotlin, la classe Regex est utilisée pour travailler avec les regex, et peut être créée de deux manières :
// Méthode 1 : via le constructeur\nval regex1 = Regex("\\\\d+")\n\n// Méthode 2 : via l'extension toRegex()\nval regex2 = "\\\\d+".toRegex()\n\n\nMéthodes principales de Regex en Kotlin
\n\nLa classe Regex propose plusieurs méthodes clés pour travailler avec les chaînes :
- \n
matches()— vérifie si toute la chaîne correspond au motif \ncontainsMatchIn()— vérifie si la chaîne contient au moins une correspondance \nfind()— trouve la première correspondance \nfindAll()— trouve toutes les correspondances \nreplace()— remplace les correspondances par la chaîne spécifiée \nsplit()— divise la chaîne selon le motif \n
Exemple 1 : Validation d'une adresse email
\n\nCommençons par un exemple pratique — la validation d'une adresse email :
\n\nfun isValidEmail(email: String): Boolean {\n val emailRegex = Regex("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,}$")\n return emailRegex.matches(email)\n}\n\nfun main() {\n val emails = listOf(\n "user@example.com",\n "invalid-email",\n "test@domain.co.uk",\n "@gmail.com"\n )\n \n emails.forEach { email ->\n println("$email: ${if (isValidEmail(email)) "valide" else "invalide"}")\n }\n}\n\n\nRésultat de l'exécution :
\nuser@example.com: valide\ninvalid-email: invalide\ntest@domain.co.uk: valide\n@gmail.com: invalide\n\nExemple 2 : Extraction de numéros de téléphone
\n\nSupposons que nous ayons un texte contenant différents numéros de téléphone, et que nous souhaitions extraire tous les numéros au format +7 (XXX) XXX-XX-XX :
\n\nfun extractPhoneNumbers(text: String): List {\n val phoneRegex = Regex("""\\+7 \\(\\d{3}\\) \\d{3}-\\d{2}-\\d{2}""")\n return phoneRegex.findAll(text).map { it.value }.toList()\n}\n\nfun main() {\n val text = """\n Contacts :\n Manager : +7 (495) 123-45-67\n Support : +7 (812) 987-65-43\n Supplémentaire : 8-800-555-35-35\n """.trimIndent()\n \n val phones = extractPhoneNumbers(text)\n println("Numéros trouvés :")\n phones.forEach { println(it) }\n}\n \n\nRésultat :
\nNuméros trouvés :\n+7 (495) 123-45-67\n+7 (812) 987-65-43\n\nNotez que le numéro 8-800-555-35-35 n'a pas été trouvé car il ne correspond pas à notre motif.
\n\nExemple 3 : Remplacement et nettoyage de texte
\n\nLes expressions régulières sont parfaites pour remplacer des parties de texte. Par exemple, supprimons toutes les balises HTML d'une chaîne :
\n\nfun removeHtmlTags(html: String): String {\n val tagRegex = Regex("<[^>]*>")\n return tagRegex.replace(html, "")\n}\n\nfun main() {\n val htmlText = """\n <h1>Titre</h1>\n <p>Ceci est un texte <b>important</b>.</p>\n <a href="link.html">Lien</a>\n """.trimIndent()\n \n val cleanText = removeHtmlTags(htmlText)\n println("Texte nettoyé :")\n println(cleanText)\n}\n\n\nRésultat :
\nBlogs
Book Recommendations
Lire aussi
Paramètres par défaut des fonctions en JavaScript : du chaos à l'élégance
Architecture pilotée par les événements en Kotlin : des coroutines aux flux réactifs
Try-catch accélère le code ? Analyse du paradoxe et des erreurs en C#
Travailler avec les files d'attente de tâches en Swift : GCD et OperationQueue
Dormir comme un Jedi : guide complet de sleep() en JavaScript 2025