Come posso testare e usare un'espressione regolare Perl in modo interattivo?


15

Di 'che ho un buffer con il testo. Vorrei testare un'espressione regolare (idealmente tipo Perl) contro il mio buffer e fare in modo che Emacs evidenzi le corrispondenze su di esso.

Ad esempio, il seguente regexp ( tratto da Wikipedia ):

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

corrisponderebbe come segue sul testo seguente:

                    inserisci qui la descrizione dell'immagine

Questa espressione regolare in particolare corrisponde ad almeno due spazi che si verificano dopo il punto (.)e prima di una lettera maiuscola.

Emacs fornisce un abbinamento interattivo di espressioni regolari per le espressioni regolari di Perl ?

Se la risposta a quest'ultima è no:

  1. C'è un motivo per cui il supporto nativo delle espressioni regolari Perl non è stato (mai) preso in considerazione in Emacs? (considerando che si tratta di uno standard ben noto in Unix / Linux)

  2. Come si può procedere alla costruzione di un tale matcher regexp Perl? (forse chiamando il Perl sotto il cofano o pre-convertendo il regexp del Perl in una variante supportata?)


2
Le regexps di Emacs precedono Perl da qualche tempo, e presumo che non siano state modificate per motivi di retrocompatibilità.
shosti,

1
Inoltre, potresti voler dare un'occhiata a github.com/joddie/pcre2el (non l'ho usato, quindi non posso garantirlo).
shosti,

Risposte:


15

Ci sono due bei pacchetti per lavorare efficacemente con il tipo di regex perl, che dovrebbero essere usati insieme - visual-regexp e la sua estensione - visual-regexp-steroidi . Sono un'ottima aggiunta a emacs:

inserisci qui la descrizione dell'immagine


2
Per chiarire, visual-regexp usa emacs regexp e la versione per steroidi può usare PCRE o Python regex come backend.
Kaushal Modi,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.