exponenta event banner

strfind

Поиск строк в других строках

Описание

пример

k = strfind(str,pat) поиски str для вхождений pat. Выходные данные, k, указывает начальный индекс каждого вхождения pat в str. Если pat не найден, то strfind возвращает пустой массив, []. strfind выполняет поиск с учетом регистра.

  • Если str - символьный вектор или строковый скаляр, strfind возвращает вектор типа double.

  • Если str является массивом ячеек символьных векторов или строковым массивом, то strfind возвращает массив ячеек векторов типа double.

пример

k = strfind(str,pat,'ForceCellOutput',cellOutput) силы strfind возвратиться k как массив ячеек, когда cellOutput верно, даже когда str - символьный вектор.

Примеры

свернуть все

Поиск начальных индексов подстрок в символьном векторе.

Сначала создайте вектор символов.

str = 'Find the starting indices of substrings in a character vector';

Найти подстроку in.

k = strfind(str,'in')
k = 1×5

     2    15    19    36    41

Существует пять экземпляров в str.

Найти подстроку In.

k = strfind(str,'In')
k =

     []

С тех пор strfind чувствителен к регистру, подстрока не найдена. k является пустым массивом.

Найти пробелы в str.

k = strfind(str,' ')
k = 1×9

     5     9    18    26    29    40    43    45    55

В 10 пустых местах str.

С R2020b г.

Создайте вектор символов.

str = 'Find the letters.'
str = 
'Find the letters.'

Создание шаблона, соответствующего последовательностям букв с помощью lettersPattern функция.

pat = lettersPattern
pat = pattern
  Matching:

    lettersPattern

Найдите индекс каждой буквы. В то время как pat соответствует последовательности букв, имеющих любую длину, strfind останавливается, как только находит совпадение, а затем переходит к следующему совпадению. Например, 'Find' и 'F' являются обоими совпадениями для lettersPattern, так как количество букв для совпадения не уточняется. Но strfind матчи 'F' сначала и возвращает его индекс. Тогда strfind матчи 'i'и так далее. (Вы можете позвонить lettersPattern с необязательным аргументом, указывающим количество соответствующих букв.)

k = strfind(str,pat)
k = 1×14

     1     2     3     4     6     7     8    10    11    12    13    14    15    16

Чтобы найти начало слов, звоните lettersPattern с границами. letterBoundary функция соответствует границе между буквами и нелеттными символами.

pat = letterBoundary + lettersPattern
pat = pattern
  Matching:

    letterBoundary + lettersPattern

k = strfind(str,pat)
k = 1×3

     1     6    10

Список функций, создающих объекты массива, см. в разделе pattern.

Найдите начальные индексы подстрок в массиве ячеек символьных векторов.

Создайте массив ячеек из векторов символов.

str = {'How much wood would a woodchuck chuck';
       'if a woodchuck could chuck wood?'};

Найти wood в str.

idx = strfind(str,'wood')
idx=2×1 cell array
    {[10 23]}
    {[ 6 28]}

Проверьте массив выходных ячеек, чтобы найти экземпляры wood.

idx{:,:}
ans = 1×2

    10    23

ans = 1×2

     6    28

Подстрока wood встречается в индексах 10 и 23 в первом символьном векторе и в индексах 6 и 28 во втором символьном векторе.

Поиск вхождений подстроки в символьном векторе. Сила strfind возвращает индексы этих вхождений в массиве ячеек. Затем просмотрите индексы.

Создание вектора символов и поиск вхождений массива ain.

str = 'The rain in Spain.';
k = strfind(str,'ain','ForceCellOutput',true)
k = 1x1 cell array
    {[6 15]}

strfind возвращает скалярную ячейку, содержащую числовой массив, содержащий индексы вхождений подстроки ain в str. Для доступа к числовому массиву в ячейке используйте фигурные скобки.

k{1}
ans = 1×2

     6    15

Входные аргументы

свернуть все

Входной текст, заданный как строковый массив, символьный вектор или массив ячеек символьных векторов.

Шаблон поиска, указанный как один из следующих:

  • Строковый массив

  • Символьный вектор

  • Массив ячеек символьных векторов

  • pattern массив (с R2020b года)

Индикатор принудительного возврата выходного сигнала в виде массива ячеек, указанный как false, true, 0, или 1.

Выходные аргументы

свернуть все

Индексы возникновения pat, возвращено в виде массива. Если pat не найден, то k является пустым массивом, [].

  • Если str - символьный вектор или строковый скаляр, k является вектором двойных значений, указывающим индекс каждого случая pat.

  • Если str - массив ячеек символьных векторов или строковый массив, k является массивом ячеек. Для каждого фрагмента текста в str, соответствующая ячейка k содержит вектор двойников, указывающий индекс каждого события pat.

Совет

  • Если pat - вектор символов или строковый скаляр без символов ('' или ""), то strfind возвращает пустой массив.

  • Начиная с R2016b, contains рекомендуется для поиска шаблонов в строковых массивах.

Расширенные возможности

.
Представлен до R2006a