2011年4月27日水曜日

Ruby 文字列 正規表現

正規表現とは?
文字列はい対してパターン照合を行うミニ言語。

■| パイプメタキャラクターはいずれかの

■メタキャラクタの説明
*^は文字列の先頭や改行文字の直後にマッチ
/^abc/........abcdofでマッチ

*$は終わりが
/^abc$/........abcdofでマッチしない

*[abc]..............abcではaかbかcの一文字にマッチ

*[a-z]..............abcでは小文字のアルファベトにマッチ

*\w.....................[a-zA-Z_0-9]

*\s.....................空白文字列



*\S.....................空白文字列以外の任意の一文字

*\d........................は[0-9] 数字にマッチ

*\D........................は[0-9] 数字以外の任意の一文字にマッチ

*\z.......................文字列の末尾にマッチする

*\Z................\zは改行文字に感知するが\Zはしない

*\G................は前回マッチした直後に位置にマッチ、しかし、最初のマッチが実行される前に\Aにマッチする

**.......................直前のパターンの0回以上の繰り返し

*+.................直前のパターンの1回以上の繰り返し

*{m}...............繰り返し回数

*{m,n}.......................m回からn回の繰り返しのマッチ

*{m,}..........................m回以上の繰り返しにマッチ

*{m,}?..............m回以上のできるだけ短い繰り返し

*?..............直前のパターンの0回か1回の繰り返し、\d{3}-?\{4}で郵便番号などで使う

*\1や\2...................前にキャプチャした部分と同じ文字列にマッチ


*(?#)...........................コメント

*i...................大文字小文字を区別しない/abc/iと記述すると大小どちらでもマッチ

*m.................複数行文字モード。「.」が改行文字にもマッチ

*x..............#kから改行までコメントとし無視する

■ソース
p "##########分解#############"
p "a,bb,ccc,            dddd"
p "a,bb,ccc, dddd".split(/,\s?/)
★結果
p "##########分解#############"
"a,bb,ccc,            dddd"
["a", "bb", "ccc", "dddd"]
puts "##########その他#############"
p "string".reverse
p "\n\rstring".strip
p "string".length

puts "##########イテレータ#############"
story.each_byte do |byte|
    p byte
end

p ""
story.each_line do |line|
    p line
end


puts "##########フォーマット#############"
p sprintf("%04d",3)
p sprintf("%08.4f", Math::PI*10)
p sprintf("hex=%X, oct=%o", 10,11)


puts "##########シンボル#############"
p symbol1 = :ruby
p symbol2 = :ruby
p symbol1 == symbol2
p symbol1.equal? symbol2

*シンボルは文字列より高速処理ができます。

0 件のコメント:

コメントを投稿