Quelle variante de regex est utilisée ici ?+−
Le moteur regex natif de JavaScript (celui derrière RegExp et String.prototype.match/replace), puisque tout ici s'exécute côté client dans votre navigateur plutôt que sur un serveur. Il est très proche de PCRE mais présente quelques différences - par exemple, le support du lookbehind dépend de la version du moteur, et les groupes nommés utilisent la syntaxe (?<nom>...).
Pourquoi mon motif ne correspond-il qu'une seule fois ?+−
Par défaut, sans le drapeau g (global), un regex s'arrête après sa première correspondance - cela reflète le comportement réel de RegExp.exec() et String.match() en JavaScript. Activez le drapeau g ci-dessus pour trouver toutes les correspondances du texte de test plutôt que la seule première.
Quelle est la différence entre (...) et (?:...) ?+−
Les deux regroupent des parties d'un motif, mais seul (...) - un groupe de capture - enregistre ce qu'il a trouvé pour que vous puissiez y faire référence plus tard (en tant que $1, $2, ... dans un remplacement, ou dans la liste des groupes de la correspondance). (?:...) est un groupe non capturant : il regroupe et applique des quantificateurs sans conserver la correspondance, utile quand vous avez besoin d'un regroupement sans vous soucier du texte capturé.
Comment fonctionnent les groupes nommés et les remplacements $<nom> ?+−
Écrivez (?<nom>...) au lieu de (...) pour capturer un groupe sous un nom plutôt qu'un simple numéro. En mode Remplacer, référencez-le dans le texte de remplacement sous la forme $<nom> - par exemple, (?<annee>\d{4})-(?<mois>\d{2}) remplacé par $<mois>/$<annee> réorganise une date sans avoir à se souvenir des numéros de groupe.
Quelle est la différence entre un quantificateur gourmand (greedy) et paresseux (lazy), comme + face à +? ?+−
Un quantificateur gourmand (+, *, {2,4}) correspond à autant de texte que possible, puis recule seulement si nécessaire pour laisser le reste du motif correspondre. Un quantificateur paresseux - le même symbole suivi de ? - correspond au contraire à aussi peu que possible, s'étendant d'un caractère à la fois uniquement si besoin. Par exemple, <.+> face à <a><b> correspond avidement à tout <a><b>, tandis que <.+?> correspond paresseusement uniquement à <a>.
Que vérifient réellement les lookahead et lookbehind s'ils ne consomment aucun caractère ?+−
Ils vérifient si un motif apparaît juste avant ou après la position actuelle sans l'inclure dans la correspondance elle-même - ainsi (?=...) et (?<=...) vérifient en avant/arrière qu'un élément doit être présent, tandis que (?!...) et (?<!...) vérifient qu'il ne doit pas être présent. C'est pourquoi vous pouvez utiliser \d+(?=px) pour ne faire correspondre un nombre que s'il est suivi de « px », alors que « px » lui-même n'apparaît jamais dans le texte correspondant.