Я соберу синтаксические различия, которые я знаю здесь. Этот ответ - вики сообщества, добавьте больше, если кто-то пожелает. Всегда проверяйте предварительный просмотр, прежде чем добавлять больше.
Когда убежать () {} |
В регулярных выражениях Emacs, (,), {,}, | являются буквальными и экранированными (\ (, \), \ {, \}, \ |) - мета.
В Perl-совместимом регулярном выражении, (,), {,}, | мета, а экранированные буквальны.
* и +
\ * - буквальная звезда в Emacs и Perl. Если выражение начинается со звезды, начальная звезда буквально в регулярном выражении Emacs, недопустимо в регулярном выражении Perl.
Аналогично для плюса.
Классы персонажей
Классы символов \d
(для цифр), \w
(для слов), \s
(для пробельных символов) не работают в регулярных выражениях Emacs, но работают в Perl. В Emacs используйте [[:digit:]]
, [[:word:]]
, [[:space:]]
вместо (с двойными скобками). В Perl они также [:digit:]
, [:word:]
, [:space:]
(одинарные скобки).
\w
в Emacs соответствует '
и "
, в отличие от Perl. Это связано с тем, что таблица синтаксиса текстового режима содержит '
и "
в качестве символов слова.
Конструкции с обратной косой чертой
Из конструкций обратной косой черты, упомянутых в Emacs Regexp Backslash , следующие конструкции НЕ находятся в Perl-совместимых регулярных выражениях.
\` \' \= \< \> \_< \_> \sC \cC
См. Также , что \ <и> может сделать то, что \ b не может сделать
\A
, \Z
, \z
НЕ в Emacs. В Emacs используйте вместо:
\` or \'
Осложнения, касающиеся перевода строк и интерактивного использования
См. Второй раздел в Соответствие текстового шаблона в Emacs . В нем также упоминается, почему \n
и \t
не соответствуют символам новой строки и табуляции в инкрементальном поиске для регулярного выражения (C-M-s
или M-x isearch-forward-regexp
) и что делать.
Etc
Регулярное выражение Emacswiki