Vérification de l'édition/TextMatch
Une communauté wiki peut créer des suggestions locales personnalisées à l'aide de la fonction TextMatch. TextMatch est un contrôle de modification qui recherche des requêtes prédéfinies et, lorsqu'une correspondance est trouvée, affiche la boîte de dialogue habituelle de contrôle de modification, accompagnée du message, du titre et des actions que l'éditeur peut effectuer.
Par exemple, un TextMatch pourrait proposer une option permettant de supprimer le terme trouvé, de le remplacer d'une manière précise, ou simplement d'inciter l'éditeur à y réfléchir. Les vérifications TextMatch peuvent être très simples, mais peuvent aussi être optimisées grâce aux options de configuration.
Voici deux exemples. La première détecte une expression pouvant faire référence au temps relatif et crée un lien vers les instructions correspondantes. La deuxième détecte certaines erreurs de ponctuation potentielles et propose un bouton permettant de les corriger.
Limites actuelles
À compter de juin 2026 :
- TextMatch ne détecte pas encore le contenu à l'intérieur des modèles
Il n'est pas possible d'exclure les listes ou d'autres balises de code de la recherche, ni de limiter le contenu aux seules listes, tableaux, titres, etc.SeeinNodebelow.- See Regex queries for more details on regex-specific limitations.
- Problèmes ouverts et demandes de fonctionnalités : Recherche sur Phabricator
Configuration
La configuration de TextMatch comprend la page habituelle Modifier la vérification/Configuration et plusieurs éléments matchRules.
Chaque matchRule équivaut à un objet à rechercher et à une description de ce qu'il faut faire une fois cet objet trouvé.
La définition de matchRule est assez souple et peut s'adapter à toutes sortes de cas, qu'il s'agisse de rechercher un simple mot et d'afficher un message d'avertissement prédéfini, ou de rechercher un ensemble complexe d'expressions régulières et de les remplacer par un résultat qui varie en fonction de ce qui a été trouvé.
Consultez la section #Exemple de configuration ci-dessous pour voir des exemples concrets de ces cas.
| Nom | Obligatoire ? | Type | Description | Défaut |
|---|---|---|---|---|
unique string id
|
obligatoire | Chaîne | Le nom abrégé du TextMatch spécifique | |
query
|
obligatoire | Tableau ou Objet | Ce qu'il faut rechercher. Cela peut prendre différents formats :
Notez que toutes les correspondances doivent commencer et se terminer à la fin d'un mot. Par exemple, si la requête est "foo", aucune correspondance ne serait détectée dans "foobar". Cela s'applique aussi bien aux correspondances regex qu'aux correspondances non regex. TextMatch utilise les mêmes [expressions régulières JavaScript https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions] que celles utilisées dans la fonctionnalité de recherche et de remplacement de VisualEditor. |
|
title
|
obligatoire | Chaîne | Ce qui s'affichera pour les utilisateurs dans la boîte de dialogue de vérification des modifications. Cela ne doit contenir que du texte brut. | |
message
|
obligatoire | Chaîne | Ce qui s'affichera pour les utilisateurs dans la boîte de dialogue de vérification des modifications. Cela peut inclure des liens vers le wiki et doit renvoyer l'utilisateur vers toute documentation pertinente afin qu'il puisse en savoir plus. | |
mode
|
optionnel | Chaîne | Quelles actions (boutons) doivent figurer dans la boîte de dialogue de vérification des modifications ? Les actions actuellement disponibles sont les suivantes : "info" (just "dismiss"), "replace" ("replace" and "dismiss"), "delete" ("delete" and "dismiss")
Si le mode n'est pas défini, seul le bouton par défaut s'affichera : |
""
|
isRegExp
|
optionnel | Booléen | Si c'est le cas, TextMatch traitera cette requête comme un motif regex. See Regex queries for more details. | false
|
config
|
optionnel | Objet | Diverses options de configuration qui s'appliquent au niveau de la règle de correspondance (et non à l'ensemble du contrôle d'édition TextMatch).
À l'avenir, nous aimerions prendre en charge d'autres éléments, tels que : les espaces de noms et les noms de pages spécifiques. |
|
inNode
|
optionnel | Chaîne | Require the match to appear inside a node of this type. Node types are from the VisualEditor data model, e.g 'mwHeading' for headings, 'paragraph' for paragraphs. | |
expand
|
optionnel | Chaîne | Si une correspondance est trouvée, cette option permet de déterminer s'il faut étendre la 'zone concernée' (la zone mise en surbrillance) à l'ensemble du paragraphe contenant la correspondance, plutôt qu'au seul texte correspondant.
Available options are:
|
|
preserveCase
|
optionnel | Booléen | Si cela est vrai et si la règle de correspondance utilise mode: "replace", le terme de remplacement proposé sera alors dans la même casse que le terme trouvé (limité à : majuscules et minuscules, ou tout en majuscules).
The case that the replacement has in the matchRule config is the lowest case that will ever be offered as a replacement. This is so that words like 'French' or 'USA' are never turned into invalid forms, even if replacing something fully lowercased. As such, consider writing TextMatch replacements in lowercase unless the term requires specific casing.
|
false
|
import
|
optionnel | Chaîne | Vous pouvez définir des règles de correspondance plus complexes dans des fichiers JSON distincts et les importer, afin de réduire la taille du fichier JSON principal. Les pages doivent être nommées MediaWiki:Editcheck-config-<name>.json, par exemple "import": "MediaWiki:Editcheck-config-LLM.json"
|
Regex queries
There are some specific complexities for matchRules that use regex queries.
- Plain backreferences are not supported, due to the way that all regex patterns in a query are bundled together for performance reasons. The suggested workaround is to use named backreferences.
- When using a regex pattern with alternation, order the alternatives from longest to shortest (e.g., use
"enhanc(ed|es|e|ing)"rather than"enhanc(e|ed|es|ing)") . This way the regex matches the full word before any shorter alternative can match a partial word that then fails the word-boundary check.[1]
Regex queries can always be tested using VisualEditor's "find and replace" tool (with the appropriate modifiers enabled). This is helpful to understand what it will and will not support.
- ↑ This is due to all TextMatch rules using a
wholeWordflag that restricts matches to those surrounded by word boundaries. As of June 2026 we are considering making this property configurable.
Instructions de test
TextMatch fait partie de la fonctionnalité Beta Mode suggestion, actuellement disponible sur toutes les versions de Wikipédia (voir État du déploiement).
Pour afficher les types de vérifications et les suggestions expérimentaux, vous pouvez ajouter le paramètre d'URL &ecenable=experimental à une session d'édition en cours dans l'éditeur visuel.
Pour tester un nouveau type de TextMatch :
- Rendez-vous sur un wiki où TextMatchEditCheck est disponible et où vous disposez d'un droit d'administrateur. Connectez-vous.
- Sur ce wiki, rendez-vous sur
MediaWiki:Editcheck-config.json - Appuyez sur Modifier
- Insérez le code JSON provenant de la configuration d'exemple ou d'autres configurations personnalisées respectant le même format.
- S'il y a déjà du JSON, ne copiez que le contenu de textMatch ; ne copiez pas les accolades extérieures
- Consultez un article de ce même wiki susceptible de contenir l'une des correspondances répertoriées dans le fichier JSON
- Ouvrir une session d'édition dans l'éditeur visuel à l'aide du paramètre d'URL
&ecenable=suggestions,experimental
Exemple de configuration
Voici un exemple de ce qui pourrait être configuré :
{
"textMatch": {
"enabled": true,
"matchRules": {
"british-english": {
"query": {
"chiseled": "chiselled",
"favor(ed|ite|ing)": "favour$1",
"somberly": "sombrely"
},
"title": "American English",
"mode": "replace",
"isRegExp": true,
"preserveCase": true,
"message": "This article requires British English. Fix?",
"config": {
"maximumEditCount": 500,
"account": "loggedin",
"hasTemplate": [
"Use British English",
"EngvarB"
]
}
},
"potential-LLM": {
"query": [
"(stands as|serves as|is) a (testament|reminder)",
"indelible mark",
"important to note",
"observers have cited"
],
"title": "Potential LLM content",
"message": "Is this LLM-generated content? Every edit that incorporates LLM output should be marked as LLM-assisted by identifying the name and, if possible, version of the AI in the edit summary.",
"isRegExp": true,
"config": {
"caseSensitive": false,
"minOccurrences": 3
},
"expand": "paragraph"
},
"cliches": {
"query": [
"tip of the iceberg",
"white elephant",
"gild the lily",
"take the plunge",
"took the plunge",
"ace up the sleeve",
"bird in the hand",
"twist of fate",
"at the end of the day"
],
"title": "Cliches and idioms",
"message": "Clichés and idioms should generally be avoided in favor of direct, literal expressions.",
"config": {
"account": false
}
},
"relative-time-ref": {
"query": [
"recently",
"lately",
"currently",
"today",
"presently",
"to date",
"years ago",
"formerly",
"in the past",
"traditionally",
"yesterday",
"tomorrow",
"in the future",
"to this day"
],
"title": "Relative time references",
"message": "Absolute specifications of time are preferred to relative constructions such as this, because the latter may go out of date.",
"config": {
"account": false
}
},
"editorializing": {
"query": [
"notably",
"it should be noted",
"arguably",
"interestingly",
"essentially",
"utterly",
"actually",
"clearly",
"absolutely",
"of course",
"without a doubt",
"indeed",
"happily",
"sadly",
"tragically",
"aptly",
"unfortunately",
"untimely"
],
"title": "Editorializing",
"mode": "delete",
"message": "Use of adverbs such as these, to highlight something as particularly significant or certain without attributing that opinion, should usually be avoided so as to maintain an impartial tone.",
"config": {
"account": false
}
},
"puffery": {
"query": [
"legendary",
"greatest",
"acclaimed",
"iconic",
"visionary",
"outstanding",
"leading",
"celebrated",
"popular",
"landmark",
"cutting-edge",
"innovative",
"revolutionary",
"extraordinary",
"brilliant",
"famous",
"renowned",
"remarkable",
"prestigious",
"world-class",
"respected",
"notable",
"virtuoso",
"honorable",
"awesome",
"unique",
"pioneering",
"phenomenal",
"prominent"
],
"title": "Puffery",
"mode": "delete",
"message": "Words such as these are often used without attribution to promote the subject of an article and should usually be avoided.",
"config": {
"account": false
}
}
}
}
}