Ответ 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
) и что делать.