Поиск строк
Это базовые функции для поиска текста в буфере. Они предназначены для использования в программах, но вы можете вызывать их интерактивно. Если вы сделаете это, они запросят строку поиска; аргументы limit и noerror nil, а repeat равен 1. Более подробную информацию об интерактивном поиске см. в разделе Поиск и замена руководства GNU Emacs.
Эти функции поиска преобразуют строку поиска в многобайтовую, если буфер многобайтовый; они преобразуют строку поиска в однобайтовую, если буфер однобайтовый. См. Представления текста.
- Команда: search-forward string &optional limit noerror count
-
Эта функция ищет вперёд от текущей позиции точное совпадение для string. При успехе она устанавливает текущую позицию в конец найденного вхождения и возвращает новое значение позиции. Если совпадение не найдено, значение и побочные эффекты зависят от noerror (см. ниже).
В следующем примере, текущая позиция изначально находится в начале строки. Затем
(search-forward "fox")перемещает текущую позицию после последней буквы 'fox':---------- Buffer: foo ---------- ∗The quick brown fox jumped over the lazy dog. ---------- Buffer: foo ----------
(search-forward "fox") ⇒ 20 ---------- Buffer: foo ---------- The quick brown fox∗ jumped over the lazy dog. ---------- Buffer: foo ----------Аргумент limit задаёт границу поиска и должен быть позицией в текущем буфере. Совпадение, простирающееся за эту позицию, не принимается. Если limit опущен или
nil, он по умолчанию устанавливается в конец доступной части буфера.То, что произойдёт, если поиск не удастся, зависит от значения noerror. Если noerror
nil, сигнализируется ошибкаsearch-failed. Если noerrort,search-forwardвозвращаетnilи ничего не делает. Если noerror ниnilниt, тоsearch-forwardперемещает текущую позицию к верхней границе и возвращаетnil.Аргумент noerror влияет только на успешные поиски, которые не находят совпадения. Неверные аргументы вызывают ошибки независимо от noerror.
Если count является положительным числом n, поиск выполняется n раз; каждый последующий поиск начинается с конца предыдущего совпадения. Если все эти последовательные поиски завершаются успешно, вызов функции успешен, перемещая позицию и возвращая её новое значение. В противном случае вызов функции терпит неудачу, с результатами, зависящими от значения noerror, как описано выше. Если count является отрицательным числом -n, поиск выполняется n раз в обратном (обратном) направлении.
- Команда: search-backward string &optional limit noerror count
Эта функция ищет назад от текущей позиции string. Она похожа на
search-forward, за исключением того, что ищет назад, а не вперед. Обратные поиски оставляют текущую позицию в начале совпадения.
- Команда: word-search-forward string &optional limit noerror count
-
Эта функция ищет вперёд от текущей позиции совпадение по слову для string. Если она находит совпадение, она устанавливает текущую позицию в конец найденного совпадения и возвращает новое значение позиции.
Сопоставление по словам рассматривает string как последовательность слов, игнорируя знаки препинания, которые их разделяют. Она ищет в буфере ту же последовательность слов. Каждое слово должно быть отличным в буфере (поиск слова 'ball' не соответствует слову 'balls'), но детали знаков препинания и пробелов игнорируются (поиск 'ball boy' соответствует 'ball. Boy!').
В этом примере, текущая позиция изначально находится в начале буфера; поиск оставляет её между 'y' и '!'.
---------- Buffer: foo ---------- ∗He said "Please! Find the ball boy!" ---------- Buffer: foo ----------
(word-search-forward "Please find the ball, boy.") ⇒ 39 ---------- Buffer: foo ---------- He said "Please! Find the ball boy∗!" ---------- Buffer: foo ----------Если limit не
nil, он должен быть позицией в текущем буфере; он определяет верхнюю границу поиска. Найденное совпадение не должно выходить за эту позицию.Если noerror
nil, тоword-search-forwardсигнализирует об ошибке, если поиск не удался. Если noerrort, то он возвращаетnilвместо сигнализации об ошибке. Если noerror ниnilниt, то она перемещает текущую позицию к limit (или концу доступной части буфера) и возвращаетnil.Если count является положительным числом, оно определяет, сколько последовательных вхождений искать. Текущая позиция устанавливается в конец последнего совпадения. Если count отрицательно, поиск выполняется назад, и текущая позиция устанавливается в начало последнего совпадения.
Внутренне,
word-search-forwardи связанные функции используют функциюword-search-regexpдля преобразования string в регулярное выражение, которое игнорирует знаки препинания.
- Команда: word-search-forward-lax string &optional limit noerror count
Эта команда идентична
word-search-forward, за исключением того, что начало или конец string не обязательно должны совпадать с границей слова, если только string не начинается или не заканчивается пробелом. Например, поиск 'ball boy' соответствует 'ball boyee', но не соответствует 'balls boy'.
- Команда: word-search-backward string &optional limit noerror count
Эта функция ищет назад от текущей позиции совпадение по слову для string. Эта функция аналогична
word-search-forwardза исключением того, что она ищет назад и обычно оставляет текущую позицию в начале совпадения.
- Команда: word-search-backward-lax string &optional limit noerror count
Эта команда идентична
word-search-backward, за исключением того, что начало или конец string не обязательно должны совпадать с границей слова, если только string не начинается или не заканчивается пробелом.
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/String-Search.html