# strindex

他の文字列の中で指定した文字列の位置を探す.

## 呼び出し手順

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

## パラメータ

haystack

  文字列. `needle`が現れる場所を探す文字列

needle

  文字列または文字列ベクトル. `haystack`で探す文字列

ind

  インデックスのベクトル

which

  インデックスのベクトル

flag

  文字列("r" の場合は正規表現)

## 説明

`strindex` は, `haystack`の中で`needle(i)`が 見つかった場所のインデックスを探します

各`k`に関して, `part(haystack,ind(k)+(0:length(needle(i))-1))` が`needle(i)`と同じ文字列となるよな `i`が存在します. `which`引数が必要な場合, これにはこれらの`i`が含まれる必要があります. 3番目のパラメータ "r" を指定する場合, needle は正規表現の文字列とする必要があります. この場合, strindex は正規表現式の規則に基づき haystack に 一致されます.

正規表現式引数を指定しない`strindex`は Knuth-Morris-Prattアルゴリズムに基づきます.

このアルゴリズムは Scilab 4.x で使用されるものよりも より強力です. いくつかの特殊なケースでは,結果が異なることがあります.

例:

// 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.

正規表現の規則はPerl言語に似ていますT. 使い始めるには, http://perldoc.perl.org/perlrequick.htmlを参照してください. より詳細なチュートリアルについては http://perldoc.perl.org/perlretut.html を参照ください. リファレンスについては, http://perldoc.perl.org/perlre.html を参照してください

## 例

    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')

## 参照

- string
- strings
- regexp
- strsubst