Expressions régulières en Kotlin avec exemples : pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Expressions régulières en Kotlin : guide complet pour débutants

\n\n

Les 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.

\n\n

Qu'est-ce qu'une expression régulière ?

\n\n

Une 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.

\n\n

En Kotlin, la classe Regex est utilisée pour travailler avec les regex, et peut être créée de deux manières :

\n\n
// 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\n

Méthodes principales de Regex en Kotlin

\n\n

La classe Regex propose plusieurs méthodes clés pour travailler avec les chaînes :

\n\n
    \n
  • matches() — vérifie si toute la chaîne correspond au motif
  • \n
  • containsMatchIn() — vérifie si la chaîne contient au moins une correspondance
  • \n
  • find() — trouve la première correspondance
  • \n
  • findAll() — trouve toutes les correspondances
  • \n
  • replace() — remplace les correspondances par la chaîne spécifiée
  • \n
  • split() — divise la chaîne selon le motif
  • \n
\n\n

Exemple 1 : Validation d'une adresse email

\n\n

Commençons par un exemple pratique — la validation d'une adresse email :

\n\n
fun 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\n

Résultat de l'exécution :

\n
user@example.com: valide\ninvalid-email: invalide\ntest@domain.co.uk: valide\n@gmail.com: invalide
\n\n

Exemple 2 : Extraction de numéros de téléphone

\n\n

Supposons 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\n
fun 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\n

Résultat :

\n
Numéros trouvés :\n+7 (495) 123-45-67\n+7 (812) 987-65-43
\n\n

Notez que le numéro 8-800-555-35-35 n'a pas été trouvé car il ne correspond pas à notre motif.

\n\n

Exemple 3 : Remplacement et nettoyage de texte

\n\n

Les expressions régulières sont parfaites pour remplacer des parties de texte. Par exemple, supprimons toutes les balises HTML d'une chaîne :

\n\n
fun 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\n

Résultat :

\n


                
                

Blogs

Book Recommendations