Comment puis-je tester et utiliser une expression régulière Perl de manière interactive?


15

Disons que j'ai un tampon avec du texte. Je voudrais tester une expression régulière (idéalement de type Perl) contre mon tampon et demander à Emacs de mettre en évidence les correspondances dessus.

Par exemple, l'expression rationnelle suivante ( tirée de Wikipedia ):

(?<=\.) {2,}(?=[A-Z]) 

correspondrait comme suit sur le texte suivant:

                    entrez la description de l'image ici

Cette expression régulière correspond en particulier à au moins deux espaces survenant après le point (.)et avant une lettre majuscule.

Emacs fournit-il un matcher d'expression régulière interactif pour les expressions régulières Perl ?

Si la réponse à cette dernière est non:

  1. Y a-t-il une raison pour laquelle le support natif des expressions régulières Perl n'a pas (jamais) été pris en compte dans Emacs? (considérant qu'il s'agit d'un standard bien connu sous Unix / Linux)

  2. Comment pourrait-on procéder pour construire un tel matcher d'expressions rationnelles Perl? (peut-être appeler Perl sous le capot, ou pré-convertir l'expression rationnelle de Perl en une variante prise en charge?)


2
Les expressions rationnelles Emacs sont antérieures à Perl depuis un certain temps, et je suppose qu'elles n'ont pas été modifiées pour des raisons de compatibilité descendante.
shosti

1
En outre, vous voudrez peut-être consulter github.com/joddie/pcre2el (je ne l'ai pas utilisé, donc je ne peux pas en garantir).
shosti

Réponses:


15

Il existe deux paquets sympas pour travailler efficacement avec des expressions rationnelles de type perl, qui devraient être utilisés ensemble - visual-regexp et son extension - visual-regexp-steroids . Ils sont un excellent ajout à emacs:

entrez la description de l'image ici


2
Pour clarifier, visual-regexp utilise emacs regexp et la version stéroïde peut utiliser PCRE ou Python regex comme backend.
Kaushal Modi

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.