Français

Texte et outils quotidiens · Boîte à outils de texte

Littéral ou regex ? Pourquoi un point dans votre terme de recherche peut modifier chaque résultat

· Pourquoi c'est important

rechercher et remplacer expressions régulières édition de texte

Un numéro de version en pointillé utilisant des chemins de recherche distincts pour les expressions littérales et régulières
Illustration vectorielle originale de ToolAcre

Explique quels caractères ont une signification dans les expressions régulières, ce qui ne va pas lorsque « a.b » ou « v1.2 (beta) » est traité comme un modèle et pourquoi un mode littéral qui échappe à tout devrait être le mode par défaut.

Recherche de « v1.2 » et correspondance « v102 » : comment un outil axé sur les expressions régulières transforme discrètement la ponctuation en caractères génériques

Un agent de support modifiant `v1.2` dans les notes de version peut raisonnablement s'attendre à ce que ces quatre caractères identifient une étiquette de version. Cependant, lorsque Regex est activé, le point signifie n'importe quel caractère à l'exception d'un saut de ligne. Le modèle peut donc correspondre à `v102`, `v1-2` ou `v1x2`, et Remplacer tout peut modifier des entrées qui n'ont jamais fait partie de la version demandée.

Cet échec est silencieux car le modèle est valide. Il n'y a aucun message d'erreur permettant de distinguer un caractère générique délibéré d'une ponctuation copiée à partir d'un nom de fichier. Le premier avertissement peut être un nombre de remplacements étonnamment élevé. Lorsque la tâche consiste à remplacer exactement un texte connu, la ponctuation doit être une donnée et non une instruction destinée au moteur de recherche.

Les métacaractères : point, crochets, parenthèses, plus, étoile, point d'interrogation, barre verticale, curseur, dollar et barre oblique inverse, et ce que chacun fait

En mode regex JavaScript, un point est un caractère générique ; les crochets définissent une classe de caractères ; les parenthèses créent un groupe ; De plus, l'étoile et le point d'interrogation contrôlent la répétition ; et un tuyau offre des alternatives. Un curseur et un signe dollar ancrent le motif au début ou à la fin de l'ensemble du texte dans cet outil, car le mode multiligne n'est pas activé.

Une barre oblique inverse modifie la façon dont le caractère suivant est lu et les accolades peuvent exprimer le nombre de répétitions. Ces symboles n'ont d'importance que dans les positions où la grammaire regex les traite spécialement, donc mémoriser une liste est moins fiable que décider du mode dont le travail a besoin. Si vous faites correspondre une étiquette, un fragment de chemin ou un nom de fichier fourni, commencez littéralement.

Les métacaractères importants en mode regex JavaScript

Le mode littéral permet à la recherche de signifier ce qui a été saisi. ToolAcre échappe aux métacaractères d'expression régulière avant de compiler la recherche, donc `v1.2 (beta)` correspond aux points, aux espaces et aux parenthèses eux-mêmes. Il ne transforme pas la phrase en un caractère générique suivi d'un groupe de capture, et il trouve toujours chaque occurrence exacte dans le texte.

Cette évasion ne se produit que du côté de la recherche. Le champ de remplacement suit toujours les règles de chaîne de remplacement JavaScript, où `$&` insère le texte correspondant et `$$` produit un signe dollar. La recherche littérale est donc la méthode par défaut sûre pour identifier le texte, mais un remplacement contenant des signes dollar mérite toujours un examen délibéré avant de sélectionner Remplacer tout.

Mode Regex : quand vous voulez du pouvoir et comment échapper vous-même à des caractères individuels

Le mode Regex est utile lorsque plusieurs formulaires doivent correspondre à une règle. Un modèle peut cibler une plage de chiffres, une ponctuation facultative ou des alternatives sans répertorier chaque orthographe source. Activez Regex uniquement lorsque cette variabilité est intentionnelle, puis échappez un caractère spécial avec une barre oblique inverse lorsqu'il doit conserver sa signification ordinaire, comme `.` pour un point.

L'outil compile le modèle avec la syntaxe regex JavaScript et l'applique toujours globalement. La suppression de la sensibilité à la casse ajoute une correspondance insensible à la casse, mais les indicateurs multilignes, à points, collants et unicode ne sont pas proposés. Une syntaxe invalide est signalée sans modifier le texte. Un modèle valide mais trop large s'exécute toujours, donc le succès de la compilation n'est pas la preuve d'un ensemble de correspondances sûr.

Exemple pratique : remplacer "config.yml (old)" dans les notes de version en mode littéral, puis essayer la même chose en mode regex pour voir la différence

Tenez compte des notes de version contenant `Load config.yml (old)`, `Archive configXyml old` et `Keep config.yml (new)`. Avec Regex désactivé, recherchez `config.yml (old)` et remplacez-le par `config.yml (legacy)`. Exactement la première phrase change car le point et les parenthèses sont échappés avant la compilation du modèle.

Activez Regex et soumettez la même recherche sans échappement. Le point peut consommer un autre caractère, tandis que le groupe de parenthèses `old` au lieu de correspondre aux parenthèses littérales, de sorte que la ligne prévue ne correspond plus à celle écrite. Un équivalent regex a besoin de `config.yml (old)`. La version littérale est plus courte, plus claire et mieux alignée sur cette tâche en texte exact.

Erreurs courantes : espaces de fin dans le champ de recherche, mélange de mots entiers et de littéraux et oubli de la vérification du nombre de remplacements

Les espaces de fin sont faciles à ignorer car le champ de recherche leur donne peu de poids visuel, mais le mode littéral les préserve. Une recherche de `beta ` ne correspondra pas à `beta` à la fin d’une ligne. Vérifiez les limites des champs lorsqu'un terme clairement visible ne rapporte aucun remplacement et évitez d'ajouter des espaces simplement pour séparer le texte copié de la prose environnante.

Un mot entier n'est pas un autre nom pour un littéral. Il enveloppe la recherche compilée dans des limites de mots, qui sont ici basées sur ASCII et peuvent échouer autour de la ponctuation ou des termes accentués. Inspectez également le nombre de remplacements après chaque exécution et utilisez Annuler lorsque cela est surprenant. Le décompte est une preuve de la portée, et non un message décoratif de réussite.

Erreurs courantes : espaces, limites de mots entiers et syntaxe de remplacement

Cette page ne constitue pas un guide complet des indicateurs d'expression régulière. ToolAcre utilise la correspondance globale et éventuellement la correspondance insensible à la casse, tandis que les ancres font toujours référence au texte complet plutôt qu'à chaque ligne. Les modèles copiés à partir de moteurs avec des indicateurs en ligne, des classes POSIX ou une syntaxe différente peuvent échouer à se compiler ou signifier autre chose dans le navigateur.

Les groupes de capture sont pris en charge, le plan nécessite donc une correction plutôt que d'indiquer qu'ils sont en dehors de l'outil. En mode Regex, les groupes peuvent être référencés avec `$1`, `$2` et des numéros ultérieurs dans le remplacement. Cette capacité est distincte de la recherche littérale et des contrôles limités des drapeaux ; utilisez-le uniquement lorsque la restructuration du texte correspondant est l'objectif réel.

Les indicateurs sont limités ici, tandis que les groupes de capture sont pris en charge dans les remplacements

La règle pratique est simple : laissez Regex désactivé lors du remplacement d'une version connue, d'un nom de fichier, d'une étiquette de produit ou d'un fragment de phrase. Le mode littéral échappe automatiquement les caractères spéciaux, préservant la ponctuation qui identifie la cible. Activez Regex uniquement lorsque vous pouvez indiquer quelle variation le modèle doit accepter et pourquoi une recherche exacte est insuffisante.

Avant de valider les notes de version modifiées, comparez le nombre signalé avec le nombre de modifications attendues et inspectez le résultat. ToolAcre laisse intacts les modèles non valides et propose l'annulation pour un modèle valide qui est allé trop loin. Ces garanties sont utiles, mais le choix du mode littéral pour le travail littéral empêche la requête large avant qu'elle ne se produise.