Функции регулярных выражений
Эти функции работают с регулярными выражениями.
- Функция: regexp-quote строка
-
Эта функция возвращает регулярное выражение, единственный точный соответствие которому является строка. Использование этого регулярного выражения в
looking-atбудет успешным только в том случае, если следующие символы в буфере — строка; при использовании в функции поиска оно будет успешным, если в искомом тексте содержится строка. См. Поиск по регулярным выражениям.Это позволяет запросить точное соответствие строке или поиск, когда вызываемая функция ожидает регулярное выражение.
(regexp-quote "^The cat$") ⇒ "\\^The cat\\$"Одно из применений
regexp-quote— объединение точного соответствия строке с контекстом, описанным как регулярное выражение. Например, это поиск строки, значение которой равно строка, окружённой пробелами:(re-search-forward (concat "\\s-" (regexp-quote string) "\\s-"))
Возвращаемая строка может быть сама строка, если она не содержит специальных символов.
- Функция: regexp-opt списки_строк &optional скобки
-
Эта функция возвращает эффективное регулярное выражение, которое будет соответствовать любой из строк в списке списки_строк. Это полезно, когда вам нужно сделать соответствие или поиск максимально быстрым — например, для режима Font Lock23.
Если списки_строк — пустой список, возвращаемое значение — регулярное выражение, которое никогда ничего не сопоставляет.
Необязательный аргумент скобки может быть одним из следующих:
- строка
-
Полученное регулярное выражение предшествует скобки и следует за ‘\)’, например, используйте ‘"\\(?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-opt-charset символы
-
Эта функция возвращает регулярное выражение, сопоставляющее символ в списке символов символы.
(regexp-opt-charset '(?a ?b ?c ?d ?e)) ⇒ "[a-e]"
- Переменная: regexp-unmatchable
Эта переменная содержит регулярное выражение, которое гарантированно не сопоставляется ни с одной строкой. Оно особенно полезно в качестве значения по умолчанию для переменных, которые могут быть установлены в шаблон, который на самом деле что-то сопоставляет.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Regexp-Functions.html