Функции для регулярных выражений
Эти функции работают с регулярными выражениями.
- Функция: regexp-quote string
-
Эта функция возвращает регулярное выражение, единственное точное совпадение которого — string. Использование этого регулярного выражения в
looking-atбудет успешным только в том случае, если следующие символы в буфере — string; при использовании в функции поиска совпадение будет найдено, если искомый текст содержит string. См. Поиск с помощью регулярных выражений.Это позволяет запрашивать точное совпадение со строкой или поиск строки при вызове функции, которая ожидает регулярное выражение.
(regexp-quote "^The cat$") ⇒ "\\^The cat\\$"Один из способов использования
regexp-quote— объединить точное совпадение со строкой и контекст, заданный как регулярное выражение. Например, этот код ищет строку, значение которой равно string, окружённую пробельными символами:(re-search-forward (concat "\\s-" (regexp-quote string) "\\s-"))
Возвращённая строка может совпадать с самой string, если она не содержит специальных символов.
- Функция: regexp-opt strings &optional paren
-
Эта функция возвращает эффективное регулярное выражение, соответствующее любой из строк в списке strings. Это полезно, когда необходимо сделать сопоставление или поиск максимально быстрым — например, в режиме Font Lock.
Если strings — пустой список, возвращаемое значение представляет собой регулярное выражение, которое никогда ни с чем не совпадает.
Необязательный аргумент paren может принимать одно из следующих значений:
- строка
-
Перед результирующим регулярным выражением добавляется paren, а после него — ‘\)’. Например, используйте ‘"\\(?1:"’, чтобы создать группу с явно заданным номером.
words-
Результирующее регулярное выражение заключается между ‘\<\(’ и ‘\)\>’.
symbols-
Результирующее регулярное выражение заключается между ‘\_<\(’ и ‘\)\_>’ (это часто подходит для сопоставления ключевых слов языков программирования и подобных элементов).
- не-
nil -
Результирующее регулярное выражение заключается между ‘\(’ и ‘\)’.
nilРезультирующее регулярное выражение заключается между ‘\(?:’ и ‘\)’, если это необходимо, чтобы следующий за ним постфиксный оператор применялся ко всему выражению.
Возвращаемое регулярное выражение упорядочено так, что оно всегда сопоставляется с максимально длинной возможной строкой.
Если не учитывать переупорядочивание, результирующее регулярное выражение
regexp-optэквивалентно, но обычно эффективнее упрощённой версии:(defun simplified-regexp-opt (strings &optional paren) (let ((parens (cond ((stringp paren) (cons paren "\\)")) ((eq paren 'words) '("\\<\\(" . "\\)\\>")) ((eq paren 'symbols) '("\\_<\\(" . "\\)\\_>")) ((null paren) '("\\(?:" . "\\)")) (t '("\\(" . "\\)"))))) (concat (car parens) (mapconcat 'regexp-quote strings "\\|") (cdr parens))))
- Функция: regexp-opt-depth regexp
Эта функция возвращает общее число группирующих конструкций (выражений в скобках) в regexp. Сюда не входят не захватывающие группы (см. Конструкции с обратной косой чертой в регулярных выражениях).
- Функция: regexp-opt-charset chars
-
Эта функция возвращает регулярное выражение, соответствующее символу из списка символов chars.
(regexp-opt-charset '(?a ?b ?c ?d ?e)) ⇒ "[a-e]"
- Переменная: regexp-unmatchable
Эта переменная содержит регулярное выражение, которое гарантированно не совпадает ни с одной строкой. Оно особенно полезно в качестве значения по умолчанию для переменных, которым может быть присвоен шаблон, действительно с чем-либо совпадающий.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Regexp-Functions.html