Ruby Recipe47 文字列を単語に分ける

文字列を単語毎に分割してリストを作るやり方。
単純に「単語に分ける」といっても何を持って単語とするかによってやり方は異なります。

str = "def foo(n) n * 3 end"

を例に3つのやり方で分割してみます。

空白類文字を区切りにして分ける
p str.split(nil)
    #=> ["def", "foo(n)", "n", "*", "3", "end"]
[a-zA-Z0-9_]のつながりだけを単語と見なして分ける
p str.scan(/\w+/n)
    #=> ["def", "foo", "n", "n", "3", "end"]
/\w+/か/\w+|[^\s\w]+/の2つを単語と見なして分ける
p str.scan(/\w+|[^\s\w]+/)
    #=> ["def", "foo", "(", "n", ")", "n", "*", "3", "end"]


基本的には一番上のsplitメソッドを使うやり方で事足りるのかな?

Rubyレシピブック 第3版 303の技

Rubyレシピブック 第3版 303の技