Spec-Zone.ru › Elisp

Функции регулярных выражений

Эти функции работают с регулярными выражениями.

Функция: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API