basyura's blog

あしたになったらほんきだす。

StringScanner

StringScanner は文字列スキャナクラスです。簡単に高速なスキャナを記述できます。

StringScanner

ちょっと試してみた。

require 'strscan'
s = StringScanner.new("<a>aaaa</a>bbbb<c>cccccc</c>aaa")

スキャン

s.scan_until(/<.*?>/)

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.matched

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.pre_match

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.post_match

<a>aaaa</a>bbbb<c>cccccc</c>aaa

スキャン

s.scan_until(/<.*?>/)

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.matched

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.pre_match

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.post_match

<a>aaaa</a>bbbb<c>cccccc</c>aaa

スキャン

s.scan_until(/<.*?>/)

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.matched

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.pre_match

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.post_match

<a>aaaa</a>bbbb<c>cccccc</c>aaa

スキャン

s.scan_until(/<.*?>/)

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.matched

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.pre_match

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.post_match

<a>aaaa</a>bbbb<c>cccccc</c>aaa

スキャン

s.scan_until(/<.*?>/)

<a>aaaa</a>bbbb<c>cccccc</c>aaa

s.rest?

#=> true

s.rest

<a>aaaa</a>bbbb<c>cccccc</c>aaa