【Ruby3.x】StringScanner::skip()メソッドの使い方
skipメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
skipメソッドは、現在のスキャン位置から特定のパターンにマッチする文字列をスキップし、スキャン位置を進めるメソッドです。このメソッドは引数として正規表現オブジェクトを受け取ります。
指定された正規表現が現在のスキャン位置から始まる文字列にマッチした場合、そのマッチした部分の文字列を読み飛ばし、スキャン位置をマッチした文字列のバイト数分だけ進めます。例えば、StringScannerオブジェクトが「DATA=123」という文字列をスキャンしており、現在のスキャン位置が文字列の先頭で、正規表現/DATA=/をskipメソッドに渡した場合、「DATA=」という文字列がスキップされ、スキャン位置は「123」の先頭に移動します。このとき、メソッドはスキップした文字列のバイト数を整数で返します。
もし正規表現が現在のスキャン位置から始まる文字列にマッチしなかった場合、スキャン位置は移動せず、元の位置のままです。この場合、メソッドはnilを返します。
このメソッドは、解析対象の文字列の中から特定の区切り文字やフォーマットパターンなどを読み飛ばし、次に処理すべき実際のデータへとスキャン位置を効率的に移動させたい場合に非常に便利です。たとえば、ログファイルの特定のヘッダー部分を無視して本文を読み始めたり、データフォーマットのプレフィックスを飛ばして値を抽出したりする際に活用できます。
構文(syntax)
1require 'strscan' 2 3scanner = StringScanner.new("example data string") 4scanner.skip(/pattern_to_skip/)
引数(parameters)
regexp
- regexp: スキャン対象の文字列からスキップ(無視)したいパターンを指定する正規表現
戻り値(return)
Integer または nil
StringScannerオブジェクトで、指定された正規表現にマッチする文字列をスキップした後に、スキップした文字列の長さを整数で返します。マッチしなかった場合はnilを返します。