unscan -> self
[permalink][rdoc][edit]-
スキャンポインタを前回のマッチの前の位置に戻します。
require 'strscan' s = StringScanner.new('test string') s.scan(/\w+/) # => "test" s.unscan s.scan(/\w+/) # => "test"
- [RETURN]
- selfを返します。
このメソッドでポインタを戻せるのは 1 回分だけです。 2 回分以上戻そうとしたときは例外 StringScanner::Error が発生します。また、まだマッチを一度も行っていないときや、前回のマッチが失敗していたときも例外 StringScanner::Error が発生します。
- [EXCEPTION] StringScanner::Error:
- 2 回分以上戻そうとした時や、まだマッチを一度も行っていない時、前回のマッチが失敗していた時に発生します。
require 'strscan' s = StringScanner.new('test string') begin # マッチを一度も行っていないので、例外が発生する。 s.unscan rescue StringScanner::Error => err puts err # 出力例 #=> unscan failed: previous match had failed end p s.scan(/\w+/) # => "test" s.unscan begin # 二回以上戻そうとしたので、例外が発生する。 s.unscan rescue StringScanner::Error => err puts err # 出力例 #=> unscan failed: previous match had failed end p s.scan(/\w+/) # => "test" p s.scan(/\w+/) # => nil begin # 前回のマッチが失敗しているので、例外が発生する。 s.unscan rescue => err puts err # 出力例 #=> unscan failed: previous match had failed end