Поиск наиболее длинного совпадения с регулярным выражением
Обычные функции регулярных выражений при необходимости выполняют обратный перебор, чтобы обработать конструкции «\|» и повторения, но продолжают его лишь до тех пор, пока не найдут какое-либо совпадение. Затем они завершают работу и сообщают о первом найденном совпадении.
В этом разделе описаны альтернативные функции поиска, которые выполняют полный обратный перебор, предусмотренный стандартом POSIX для сопоставления с регулярными выражениями. Они продолжают обратный перебор, пока не проверят все варианты и не найдут все совпадения, поэтому могут сообщить о самом длинном совпадении, как того требует POSIX. Это намного медленнее, поэтому используйте эти функции только тогда, когда вам действительно нужно найти самое длинное совпадение.
Несмотря на свои названия, функции поиска и сопоставления POSIX используют регулярные выражения Emacs, а не регулярные выражения POSIX. См. раздел Регулярные выражения Emacs и POSIX. Кроме того, они не обеспечивают корректную поддержку операторов нежадного повторения (см. раздел нежадное повторение). Это связано с тем, что обратный перебор POSIX противоречит семантике нежадного повторения.
- Команда: posix-search-forward regexp &optional limit noerror count
Эта функция подобна
re-search-forward, но выполняет полный обратный перебор, предусмотренный стандартом POSIX для сопоставления с регулярными выражениями.
- Команда: posix-search-backward regexp &optional limit noerror count
Эта функция подобна
re-search-backward, но выполняет полный обратный перебор, предусмотренный стандартом POSIX для сопоставления с регулярными выражениями.
- Функция: posix-looking-at regexp &optional inhibit-modify
Эта функция подобна
looking-at, но выполняет полный обратный перебор, предусмотренный стандартом POSIX для сопоставления с регулярными выражениями.
- Функция: posix-string-match regexp string &optional start inhibit-modify
Эта функция подобна
string-match, но выполняет полный обратный перебор, предусмотренный стандартом POSIX для сопоставления с регулярными выражениями.
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/Longest-Match.html