rindex関数:指定の文字列が含まれている最後の位置を検索する

Perl で用意されている組み込み関数の一つである rindex 関数の使い方です。 rindex 対象となる文字列の中に指定の文字列が含まれるか検索し、見つかった場合に最後の位置を返します。

※最初の位置を返すには「index関数」を使用します。

(Last modified: )

rindex関数の書式と基本的な使い方

rindex 関数は次のように定義されています。

rindex
rindex(STR,SUBSTR[,POSITION])
指定した部分文字列が含まれるかどうかを検索し、含まれていた場合は最後に
現れた位置を返します。

パラメータ:
  STR  対象の文字列
  SUBSTR  検索する部分文字列
  POSITION  検索終了位置
戻り値:
  見つかった場合は最初の位置、見つからなかった場合は-1

1 番目の引数には対象となる文字列を指定します。

2 番目の引数には検索する部分文字列を指定します。

省略可能な 3 番目の引数には検索を終了する位置を指定します。指定した位置にある文字も検索対象に含まれます。省略した場合は最後の文字が指定されたものとして扱われます。

指定した文字列が見つかった場合にはその位置を返します。見つからなかった場合は -1 が返されます。

Hamamatsu を対象に ma を検索する

Hamamatsu
---------
012345678

この場合は4の位置に最後の ma が見つかるため 4 が返される

また検索終了位置を指定した場合は次のように考えます。

Hamamatsu を対象に検索位置 5までの間で ma を検索する。

Hamama|tsu
---------
012345|678

この場合は4の位置に最後の ma が見つかるため 4 が返される
Hamamatsu を対象に検索位置 4までの間で ma を検索する。

Hamam|atsu
---------
01234|5678

この場合は4の位置に最後の ma が見つかるため 4 が返される
検索する部分文字列の先頭の文字が検索範囲に含まれていればOK
Hamamatsu を対象に検索位置 3までの間で ma を検索する。

Hama|matsu
---------
0123|45678

この場合は2の位置に最後の ma が見つかるため 2 が返される

具体的には次のように記述します。

my $str = "Hamamatsu";
my $pos = rindex($str, "ma");
サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my $target = "Hamamatsu";
print "検索対象:$target, 検索文字:ma\n";

my $pos;
$pos = rindex($target, "ma");
print "終了末, 位置:$pos\n";

$pos = rindex($target, "ma", 5);
print "終了5, 位置:$pos\n";

$pos = rindex($target, "ma", 4);
print "終了4, 位置:$pos\n";

$pos = rindex($target, "ma", 3);
print "終了3, 位置:$pos\n";

$pos = rindex($target, "ma", 2);
print "終了2, 位置:$pos\n";

$pos = rindex($target, "ma", 1);
print "終了1, 位置:$pos\n";

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

rindex関数:指定の文字列が含まれている最後の位置を検索する(1)

対象の文字列の中に指定した文字が含まれているかどうかを開始位置を色々と変えながら検索しました。見つかった場合は最後の位置を取得します。

-- --

Perl で用意されている組み込み関数の一つである rindex 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。