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

Существуют десять пустых пространств в 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 с контурами. The 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