web-dev-qa-db-fra.com

Notepad ++ Regex Backreference syntax in Search / Replace - \ 1 or $ 1

J'ai essayé d'utiliser le Bloc-notes ++ Rechercher/Remplacer par une expression régulière pour remplacer des mots spécifiques par des versions plus courtes de ces mots.


J'ai utilisé l'expression régulière suivante pour faire correspondre chaque mot se terminant par er (mais pas er en tant que mot) - et remplacer les mots correspondants par les mêmes mots moins la fin r , en utilisant une référence arrière:

Find what:([a-zA-z]+e)r

Replace with:$1

Mais il ne remplace pas les mots correspondants, même s'il les trouve.

Cependant, si je change la syntaxe de référence arrière en ceci:

Replace with:\1

Tout fonctionne bien.


Pourquoi le $1 travail de référence?

Quelle est la différence entre les deux formes de backrefernce - \1 et $1?

36
amiregelz

Les versions antérieures de Notepad ++ (v5.9.8 et antérieures) ne supportaient que la norme POSIX Expressions régulières. Cependant, la prise en charge complète de la recherche/remplacement PCRE (Perl Compatible Regular Expression) a été ajoutée dans la version 6.0:

Nouvelles fonctionnalités et améliorations dans Notepad ++ 6.0:

  • PCRE (expressions régulières compatibles Perl) est pris en charge.

Cela signifie que si vous utilisez Notepad ++ v6.0 ou toute version plus récente (par exemple v6.1.5), vous pouvez utiliser la syntaxe PCRE et utiliser $1 au lieu de \1 pour référence arrière, mais il ne sera pas compatible avec les versions antérieures de Notepad ++ (antérieures à la version 6.0). A part ça, ils sont similaires.

Pour plus d'informations sur les différences entre la syntaxe de référence arrière et les raisons de la nouvelle prise en charge de la syntaxe, consultez Syntaxe des références arrière dans les chaînes de remplacement (pourquoi le signe dollar?) .

Un tutoriel utile sur la façon d'utiliser les expressions régulières dans Notepad ++ peut être trouvé ici .

37
amiregelz