Как я могу тестировать и использовать регулярное выражение Perl в интерактивном режиме?

15

Скажем, у меня есть буфер с текстом. Я хотел бы проверить регулярное выражение (в идеале тип Perl) в моем буфере и сделать так, чтобы Emacs выделял совпадения на нем.

Например, следующее регулярное выражение ( взято из Википедии ):

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

будет соответствовать следующему тексту:

                    введите описание изображения здесь

Это регулярное выражение, в частности, соответствует как минимум двум пробелам, встречающимся после точки (.)и перед заглавной буквой.

Предоставляет ли Emacs интерактивное средство сопоставления регулярных выражений для регулярных выражений Perl ?

Если ответ на последний нет:

  1. Есть ли причина, по которой встроенная поддержка регулярных выражений Perl никогда не рассматривалась в Emacs? (учитывая, что это хорошо известный стандарт в Unix / Linux)

  2. Как можно было бы построить один такой Perl-регулярное выражение? (возможно, вызов Perl изнутри или предварительное преобразование регулярного выражения Perl в поддерживаемый вариант?)

Амелио Васкес-Рейна
источник
2
Регулярные выражения Emacs предшествуют Perl, и я предполагаю, что они не были изменены по причинам обратной совместимости.
Шости
1
Кроме того, вы можете проверить github.com/joddie/pcre2el (я не использовал его, поэтому я не могу ручаться за это).
Шости

Ответы:

15

Существует два замечательных пакета для эффективной работы с регулярными выражениями типа perl, которые следует использовать вместе - visual-regexp и его расширение - visual-regexp-steroids . Они являются отличным дополнением к emacs:

введите описание изображения здесь

welldan97
источник
2
Для пояснения, visual-regexp использует emacs regexp, а версия стероидов может использовать PCRE или Python regex в качестве бэкэнда.
Каушал Моди