Что такое оператор OR в регулярных выражениях emacs? - PullRequest
8 голосов
/ 14 декабря 2010

В руководстве сказано, что нужно использовать '\ |', поскольку a \ | b соответствует a или b. Но когда я использую его с помощью regexp builder или align-regexp, например, с помощью «True \ | False» он не распознает «True» или «False». Я получаю следующее сообщение:

Wrong argument type: integer-or-marker-p, nil

Что я делаю не так?

Ответы [ 2 ]

10 голосов
/ 14 декабря 2010

Использовать двойной escape: \\|

A Несколько дополнительных замечаний:

Emacs имеет 2 экранирующих стиля, один в EmacsLisp, другой при использовании в командах,то есть.из приглашения M-x (rgrep, occur,…)

В EmacsLisp используйте двойную обратную косую черту \\|

Начиная с M-x … используйте одну обратную косую черту \|

… В качестве дополнительного примечания при написании встроенного EmacsLisp, например, в динамических расширениях yasnippet, необходимо использовать четырехкратный обратный слеш: \\\\| (чтобы избежать двойной обратной косой черты.)

Всегда избегайте этого (если это возможно), например, в yasnippet вы можете предоставить emacslisp, связанный с режимом, без дополнительного экранирования, через .yas-setup.el

4 голосов
/ 15 декабря 2010

Подробнее см. Обсуждение '\' и строк в разделе 34.3.1.1 руководства elisp «Специальные символы в регулярных выражениях»

M -: (info "(elisp) Regexp Special") RET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...