Lua Memo

string.find ... 文字列の検索

string.find (s, pattern [, init [, plain]])

文字列 s 内で pattern の最初のマッチを探す。

もしマッチが見つかれば、find は s 内でこのパターンがマッチした開始位置と終了位置のインデックスを返す。そうでなければ nil を返す。

三番目の省略可能な引数 init は検索開始位置を指定し、デフォルト値は1で、負の値も使える。

四番目の省略可能な引数 plain に true が指定されると、パターンマッチング機能はオフになり、 pattern 中の「魔法の」文字は無くなって、ただの「部分文字列を検索する」操作になる。 plain を与える場合は init も与えなければならないことに注意。

もしパターン内にキャプチャが指定されていれば、マッチ成功時にキャプチャされた文字列が2つのインデックスの後に返される。(下記サンプルを参照のこと)

sample

検索文字列の最初と最後のインデックスを返す

s = "abc def ghi jkl"
print(s:find("def")) --> 5 7

正規表現も使える

-----12345678901
s = "zip:0001122"
print(s:find("%d+"))-->5 11

正規表現でカッコ(..)を使うと、その第3戻り値に、マッチした部分を返すようになる。

s = "abc def ghi jkl"
print(s:find("%w")) --> 1 3
print(s:find("(%w+)")) --> 1 3 abc