string.find (s, pattern [, init [, plain]]) |
文字列 s 内で pattern の最初のマッチを探す。
もしマッチが見つかれば、find は s 内でこのパターンがマッチした開始位置と終了位置のインデックスを返す。そうでなければ nil を返す。
三番目の省略可能な引数 init は検索開始位置を指定し、デフォルト値は1で、負の値も使える。
四番目の省略可能な引数 plain に true が指定されると、パターンマッチング機能はオフになり、 pattern 中の「魔法の」文字は無くなって、ただの「部分文字列を検索する」操作になる。 plain を与える場合は init も与えなければならないことに注意。
もしパターン内にキャプチャが指定されていれば、マッチ成功時にキャプチャされた文字列が2つのインデックスの後に返される。(下記サンプルを参照のこと)
検索文字列の最初と最後のインデックスを返す
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