Perl 文字列の位置を取得する(index/rindex)

Perlのindexメソッドとrindexメソッドで、文字列の位置を取得するサンプルです。

確認環境
・Perl 5.26.3

目次

文字列 前から検索し最初の文字列の位置を取得する(index)
  検索開始位置を指定する(index)
  後から検索し最初の文字列の位置を取得する(rindex)
  検索開始位置を指定する(rindex)

前から検索し最初の文字列の位置を取得する(index)

index (検索する文字列, 検索する文字列, 検索開始位置);
  • 文字列の前から検索して引数に指定した文字列が出現した位置を返します。
  • 先頭の1文字目の位置は0です。
  • 該当の文字がなかったときは-1を返します。
  • 3つめの引数は検索を開始する位置です。
  • 以下はPerl公式の日本語翻訳サイトのindexメソッドのリンクです。
    http://perldoc.jp/func/index

indexメソッドのサンプルです。

#! /usr/bin/perl
use strict;
use warnings;
use utf8;

my $a = "あいうあいう";
print index($a,'あ'); # 0
print index($a,'い'); # 1
print index($a,'う'); # 2
print index($a,'あいう'); # 0
print index($a,'ん'); # -1

my $b = "abcabc";
print index($b,'a'); # 0
print index($b,'b'); # 1
print index($b,'c'); # 2
print index($b,'abc'); # 0
print index($b,'z'); # -1

6行目は、変数に文字列を代入しています。
7~10行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。
11行目は、該当の文字がないので-1が返ります。

検索開始位置を指定する(index)

#! /usr/bin/perl
use strict;
use warnings;
use utf8;

my $a = "あいうあいう";
print index($a,'あ',5); # -1
print index($a,'あ',4); # -1
print index($a,'あ',3); # 3
print index($a,'あ',2); # 3
print index($a,'あ',1); # 3
print index($a,'あ',0); # 0

7行目の引数は5で対象の文字列は(う)です。文字(あ)はないので-1です。
8行目の引数は4で対象の文字列は(いう)です。文字(あ)はないので-1です。
9行目の引数は3で対象の文字列は(あいう)です。位置の3が返ります。
10行目の引数は2で対象の文字列は(うあいう)です。位置の3が返ります。
11行目の引数は1で対象の文字列は(いうあいう)です。位置の3が返ります。
12行目の引数は0で対象の文字列は(あいうあいう)です。位置の0が返ります。

 

後から検索し最初の文字列の位置を取得する(rindex)

rndex (検索する文字列, 検索する文字列, 検索開始位置);
  • 文字列の後から検索して引数に指定した文字列が出現した位置を返します。
  • 先頭の1文字目の位置は0です。
  • 該当の文字がなかったときは-1を返します。
  • 2つめの引数は検索を開始する位置です。
  • 以下はPerl公式の日本語翻訳サイトのrindexメソッドのリンクです。
    http://perldoc.jp/func/rindex

rindexメソッドのサンプルです。

#! /usr/bin/perl
use strict;
use warnings;
use utf8;

my $a = "あいうあいう";
print rindex($a,'あ'); # 3
print rindex($a,'い'); # 4
print rindex($a,'う'); # 5
print rindex($a,'あいう'); # 3
print rindex($a,'ん'); # -1

my $b = "abcabc";
print rindex($b,'a'); # 3
print rindex($b,'b'); # 4
print rindex($b,'c'); # 5
print rindex($b,'abc'); # 3
print rindex($b,'z'); # -1

6行目は、変数に文字列を代入しています。
7~10行目は、後ろから検索し引数の文字列が最初に見つかった位置を返しています。
11行目は、該当の文字がないので-1が返ります。

検索開始位置を指定する(rindex)

#! /usr/bin/perl
use strict;
use warnings;
use utf8;

my $a = "あいうあいう";
print rindex($a,'あ',5); # 3
print rindex($a,'あ',4); # 3
print rindex($a,'あ',3); # 3
print rindex($a,'あ',2); # 0
print rindex($a,'あ',1); # 0
print rindex($a,'あ',0); # 0

7行目の引数は5で対象の文字列は(あいうあいう)です。位置の3が返ります。
8行目の引数は4で対象の文字列は(あいうあい)です。位置の3が返ります。
9行目の引数は3で対象の文字列は(あいうあ)です。位置の3が返ります。
10行目の引数は2で対象の文字列は(あいう)です。位置の0が返ります。
11行目の引数は1で対象の文字列は(あい)です。位置の0が返ります。
12行目の引数は0で対象の文字列は(あ)です。位置の0が返ります。

関連の記事

Perl if文のサンプル
Perl while文とdo…while文のサンプル
Perl for文のサンプル(last/next)
Perl 計算のサンプル($a +=3や++$aと$a++)

△上に戻る