# strindex

search position of a character string in an other string

## Calling Sequence

                ind = strindex(haystack, needle, [flag])
                [ind, which] = strindex(haystack, needle, [flag])

## Arguments

haystack

  a character string. The string where to search occurrences of `needle`.

needle

  a character string or character string vector. The string(s) to search in `haystack`.

ind

  a vector of indexes.

which

  a vector of indexes.

flag

  a string (`"r"` for regular expression).

## Description

`strindex` searches indexes where `needle(i)` is found in `haystack`.

For each `k` it exist an `i` such that `part(haystack,ind(k)+(0:length(needle(i))-1))` is the same string than `needle(i)`. If `which` argument is required it contains these `i`. When using the third parameter `"r"`, the `needle` should be a string of regular expression. And then `strindex` is going to match it with `haystack` according to the regular express rules.

`strindex` without regular expression argument is based on Knuth-Morris-Pratt algorithm.

This algorithm is more powerful than that used in Scilab 4.x. In some special case, result can be different.

Example:

// Scilab 5.x

-->[k,w]=strindex('aab',['a','ab'])

w = 1. 1. 2. k = 1. 2. 2.

// Scilab 4.x

-->[k,w]=strindex('aab',['a','ab'])

w = 1. 1. k = 1. 2.

The rules of regular expression are similar to Perl language. For a quick start, see http://perldoc.perl.org/perlrequick.html. For a more in-depth tutorial on, see http://perldoc.perl.org/perlretut.html and for the reference page, see http://perldoc.perl.org/perlre.html

## Examples

    k=strindex('SCI/demos/scicos','/')
    k=strindex('SCI/demos/scicos','SCI/')
    k=strindex('SCI/demos/scicos','!')
    k=strindex('aaaaa','aa')
    k=strindex('SCI/demos/scicos',['SCI','sci'])
    [k,w]=strindex('1+3*abc/2.33',['+','-','*','/'])
    k=strindex('2' ,'/2(]*)?$\1/' ,'r')

## See Also

- string
- strings
- regexp
- strsubst