【Ruby3.x】StringScanner::check_until()メソッドの使い方
check_untilメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
check_untilメソッドは、StringScannerオブジェクトが持つ文字列の中で、現在のスキャン位置から指定されたパターン(正規表現)が見つかるまでを試行的に確認するメソッドです。このメソッドは、引数として正規表現を受け取ります。現在のスキャン位置から文字列の最後までを探索し、指定された正規表現にマッチする部分が見つかった場合、現在のスキャン位置からマッチした正規表現の終端までの部分文字列を返します。
このメソッドの最も重要な特徴は、スキャン位置(ポインタ)が一切移動しない点です。つまり、check_untilメソッドを実行しても、StringScannerが次にスキャンを開始する位置は変わりません。これは、実際の文字列消費操作であるscanメソッドなどと大きく異なります。もし、現在のスキャン位置から文字列の最後までを探索しても指定されたパターンにマッチする部分が見つからなかった場合は、nilが戻り値として返されます。
check_untilメソッドは、スキャン位置を動かすことなく、文字列の特定のパターンがどこに存在するか、あるいは存在しないかを確認したい場合に非常に有効です。例えば、次にどの操作を行うべきかを決定するために、先に文字列の内容を「覗き見」するような状況で利用されます。この機能により、テキスト解析のロジックをより柔軟かつ安全に組み立てることができます。
構文(syntax)
1require 'strscan' 2 3s = StringScanner.new("sample text") 4s.check_until(/text/)
引数(parameters)
pattern, advance: true
- pattern: String, Regexp: 検索したい文字列または正規表現
- advance: true, false: マッチした位置までスキャナを進めるかどうかを示す真偽値(デフォルトはtrue)
戻り値(return)
String または nil
指定された正規表現にマッチするまで、文字列の先頭からスキャンした部分文字列を返します。マッチしなかった場合は nil を返します。