0Pricing
Swift Academy · Leçon

DSL RegexBuilder

Composez des expressions régulières avec un générateur lisible.

DSL RegexBuilder est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

DSL RegexBuilder

Les littéraux d’expressions régulières complexes deviennent difficiles à lire. Le module RegexBuilder permet de construire des motifs à partir de code Swift au moyen d’un DSL générateur de résultats, avec des composants nommés et des types.

Importer RegexBuilder

Importez le module, puis construisez un Regex avec le générateur Regex { ... }. À l’intérieur, chaque ligne constitue une partie séquentielle du motif.

import RegexBuilder

let re = Regex {
    "ID-"
    OneOrMore(.digit)
}
print("ID-42".contains(re))

OneOrMore

OneOrMore(...) correspond à une ou plusieurs occurrences du composant donné, ce qui équivaut à +. .digit est une classe de caractères intégrée.

import RegexBuilder

let number = Regex {
    OneOrMore(.digit)
}
if let m = "abc789".firstMatch(of: number) {
    print(m.0)
}

ZeroOrMore et Optionally

ZeroOrMore équivaut à * et Optionally à ?. Ils permettent de répéter ou d’omettre certaines parties du motif.

import RegexBuilder

let re = Regex {
    "color"
    Optionally("u")
    "r"
}
print("colour".wholeMatch(of: re) != nil)
print("color".wholeMatch(of: re) != nil)

Capture

Capture { ... } crée un groupe capturant. La sous-chaîne correspondante apparaît dans la sortie du tuple, comme avec des parenthèses dans un littéral.

import RegexBuilder

let re = Regex {
    "v"
    Capture { OneOrMore(.digit) }
}
if let m = "v123".wholeMatch(of: re) {
    print("Version: \(m.1)")
}

Transformer les captures

Un Capture peut contenir une fermeture de transformation qui convertit le texte correspondant en valeur typée ; la sortie est donc déjà un Int ou un autre type.

import RegexBuilder

let re = Regex {
    Capture {
        OneOrMore(.digit)
    } transform: { Int($0)! }
}
if let m = "42".wholeMatch(of: re) {
    let n: Int = m.1
    print(n + 1)
}

CharacterClass

Utilisez CharacterClass ou des éléments intégrés comme .word, .whitespace et des plages comme ("a"..."z") pour définir les caractères autorisés.

import RegexBuilder

let re = Regex {
    One(.word)
    ZeroOrMore(("a"..."z"))
}
print("hello".contains(re))

Ancres dans le générateur

Ajoutez Anchor.startOfLine et Anchor.endOfLine pour effectuer des assertions de position dans le générateur.

import RegexBuilder

let re = Regex {
    Anchor.startOfLine
    OneOrMore(.digit)
    Anchor.endOfLine
}
print("100".wholeMatch(of: re) != nil)

Composants réutilisables

Vous pouvez stocker des sous-motifs dans des variables et les composer, ce qui rend les expressions régulières volumineuses modulaires et lisibles.

import RegexBuilder

let field = Reference(Substring.self)
let re = Regex {
    Capture(as: field) { OneOrMore(.word) }
}
if let m = "name".firstMatch(of: re) {
    print(m[field])
}

Plusieurs captures

Chaque Capture ajoute un élément de sortie dans l’ordre, de sorte qu’un analyseur de date expose séparément l’année, le mois et le jour.

import RegexBuilder

let date = Regex {
    Capture { Repeat(.digit, count: 4) }
    "-"
    Capture { Repeat(.digit, count: 2) }
}
if let m = "2024-05".wholeMatch(of: date) {
    print("\(m.1) / \(m.2)")
}

Choisir entre le DSL et le littéral

Utilisez les littéraux pour les motifs courts et le DSL pour les motifs longs qui bénéficient de noms, de types et de transformations. Ils sont interchangeables et peuvent même être imbriqués.

import RegexBuilder

let re = Regex {
    "#"
    Capture { /[0-9a-fA-F]{6}/ }
}
if let m = "#FF8800".wholeMatch(of: re) {
    print("Hex: \(m.1)")
}

Vérification rapide

Quel composant de RegexBuilder correspond à une ou plusieurs occurrences d’un élément ?

Récapitulatif

Le RegexBuilder DSL construit des expressions régulières à partir de code Swift avec Regex { }, en utilisant OneOrMore, Optionally, Capture avec des transformations, des classes de caractères et des ancres. Il rend les motifs complexes lisibles et sûrs du point de vue des types. Ensuite, vous modifierez du texte avec replacing et split.

Questions Fréquemment Posées

La leçon « DSL RegexBuilder » est-elle gratuite ?

Oui — le texte complet de « DSL RegexBuilder » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « DSL RegexBuilder » ?

Composez des expressions régulières avec un générateur lisible. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « DSL RegexBuilder » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Littéraux Regex et correspondance
  2. Groupes de capture
  3. DSL RegexBuilder
  4. Remplacer et découper du texte
← Retour à Swift Academy