# grep

поиск соответствий строки в векторе строк

## Последовательность вызова

    row = grep(haystack, needle )
                [row, which] = grep(haystack, needle )
                row = grep(haystack, needle, [flag])
                [row, which] = grep(haystack, needle, [flag])

## Аргументы

haystack

  вектор-строка символьных строк.

needle

  символьная строка или вектор-строка символьных строк. Строка (строки), которая ищется в `haystack`.

row

  вектор индексов: строка, где было найдено соответствие или пустая матрица, если соответствие не найдено.

which

  вектор индексов: индекс найденной строки `needle` или пустая матрица, если соответствия не найдено.

flag

  символ (`"r"` для регулярного выражения).

## Описание

Для каждого элемента `haystack` функция `grep` ищет соответствие подстроки со строкой в `needle`. Индекс элементов `haystack`, где было найдено соответствие, возвращается в выходном аргументе `row`. Необязательный выходной аргумент `which` даёт индекс первого найденного строкового значения в `needle`.

Когда используется третий параметр `flag``="r"`, то ожидается, что `needle` будет строкой регулярного выражения. В этом случае `grep` использует `needle` в качестве регулярного выражения и сравнивает его с `haystack` в соответствии с правилами регулярного выражения. См. подробности по регулярным выражениям в функции regexp.

## Пример №1

В следующем примере мы ищем одну или две строки в тексте, который хранится в переменной `txt`.

    txt=['поиск соответствий строк в векторе строк'
         'поиск положения символьной строки в другой строке'
         'Сравнение Строк'];
    grep(txt,'строк')
    grep(txt,['строк' 'Строк'])
    [r,w]=grep(txt,['строк' 'Строк'])

## Пример №2

В следующем примере выполняется поиск с помощью регулярных выражений.

    str = ["hat";"cat";"hhat";"chat";"hcat";"ccchat";"at";"dog"]
    grep(str,'/[hc]+at/','r')
    grep(str,'/[hc]?at/','r')
    grep(str,'/cat|dog/','r')

## Смотрите также

- strindex
- regexp