Подтвердить что ты не робот

Таблица сравнения для регулярных выражений emacs regexp и perl (PCRE)?

Есть ли в Интернете симпатичная таблица или cheatsheet, которая сравнивает ситакс регулярного выражения emacs и PCRE?

Что я должен помнить, чтобы избежать группировки скобок и фигурных скобок и других различий, когда я использую emacs regex, все это запутывает, таблица сравнения синтаксиса была бы хороша для минимизации путаницы.

4b9b3361

Ответ 1

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

Когда для выхода() {} |

В Emacs regexp, (,), {,}, | являются литеральными и экранированными (\ (, \),\{, \},\|) являются мета.

В Perl-совместимом регулярном выражении, (,), {,}, | являются мета, а экранированные - буквальными.

* и +

\ * - буквальная звезда как в Emacs, так и Perl. Если выражение начинается со звезды, стартовая звезда является буквальной в Emacs regexp, незаконной в Perl regexp.

Аналогично для плюса.

Классы символов

Классы символов \d (для цифр), \w (для слов), \s (для пробельных символов) не работают в регулярных выражениях Emacs, а работают в Perl. В Emacs используйте [[:digit:]], [[:word:]], [[:space:]] вместо (с двойными скобками). В Perl они также [:digit:], [:word:], [:space:] (одиночные скобки).

\w в Emacs соответствует ' и " тоже, в отличие от Perl. Это связано с тем, что таблица синтаксиса текстового режима имеет ' и " как символы слова.

Конструкции обратной косой черты

Конструкции обратной косой черты, упомянутые в Emacs Regexp Backslash, следующие конструкции НЕ находятся в регулярных выражениях, совместимых с Perl.

\` \' \= \< \> \_< \_> \sC \cC

См. также what\< и > может сделать, что \b не может сделать

\A, \Z, \Z НЕ находятся в Emacs. В Emacs используйте вместо этого:

\` or \'

Осложнения в отношении новых строк и интерактивного использования

См. второй раздел в Согласование текстовых шаблонов в Emacs. В нем также упоминается, почему \n и \t не соответствуют символам новой строки и вкладкам в инкрементном поиске вперед для регулярного выражения (C-M-s или M-x isearch-forward-regexp) и что делать.

Etc

Регулярное выражение Emacswiki

Ответ 3

Разница заключается только в символах (){}|, не так ли?