Як я можу перевірити та використовувати регулярний вираз Perl інтерактивно?


15

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

Наприклад, такий регекс ( узятий із Вікіпедії ):

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

відповідатиме наступному тексту:

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

Цей регулярний вираз, зокрема, відповідає щонайменше двом пробілам, що виникають після періоду (.)та перед великою літерою.

Чи забезпечує Emacs інтерактивний відповідник регулярних виразів для регулярних виразів Perl ?

Якщо відповідь на останнє - ні:

  1. Чи є причина , чому рідна підтримка Perl регулярних виразів не було (ніколи) розглядається в Emacs? (враховуючи, що це добре відомий стандарт в Unix / Linux)

  2. Як можна було продовжити створення однієї такої відповідники з перетворенням Perge? (можливо, зателефонувавши Perl під кришку, або попередньо перетворивши регулярний вираз Perl в підтримуваний варіант?)


2
Emacs regexps деякий час передував Perl, і я припускаю, що вони не були змінені з причин зворотної сумісності.
shosti

1
Крім того, ви можете перевірити github.com/joddie/pcre2el (я його не використовував, тому не можу поручитися за це).
shosti

Відповіді:


15

Є два приємні пакети для ефективної роботи з регексами типу perl, які слід використовувати разом - visual-regexp та його розширення - visual-regexp-steroids . Вони є чудовим доповненням до emacs:

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


2
Для уточнення, Visual-regexp використовує emacs regexp, а версія стероїдів може використовувати PCRE або Python regex як бекенд.
Каушал Моді

6

re-builderдозволяє на ходу побудувати регулярні вирази у стилі emacs lisp. Я не знаю, чи існує еквівалентний пакет для інтерактивного побудови регулярних виразів Perl.

Див. Http://www.masteringemacs.org/articles/2011/04/12/re-builder-interactive-regexp-builder/ для отримання більш детальної дискусії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.