Огромное количество обратных косых черт, которые требуют мои регулярные выражения, довольно безумно. Есть ли в elisp литералы регулярных выражений, поэтому я могу написать что-то вроде
rx"some\(regexp\)"
вместо того
"some\\(regexp\\)"
elisp
regular-expressions
syntax
nosefrog
источник
источник
\\|
,\\(
и\\)
. К сожалению, во многих темах это не видно. Вы можете переопределитьfont-lock-regexp-grouping-backslash
иfont-lock-regexp-grouping-construct
сделать это более отчетливым.Ответы:
Одним из вариантов является использование
rx
макроса для построения выражений с использованием sexps.Ваш пример становится
(rx "some" (group "regexp"))
Вот еще пара примеров из раздела комментариев в rx.el, чтобы понять, как это
rx
работает:Это
^;;\\s-*\n\\|^\n
становитсяЭто
[ \t\n]*:\\([^:]+\\|$\\)
становитсяисточник
rx
синтаксиса, что облегчает их сопровождение. Imho, для подобных случаев синтаксис rx сам по себе делает elisp достойной заменой perl python, ruby и т. Д. Спасибо.Нет, он не имеет литералов регулярных выражений, но многие находят pcre2el полезной альтернативой.
В частности, используя его от elisp, как это:
источник