正規表現とは?
文字列はい対してパターン照合を行うミニ言語。
■| パイプメタキャラクターはいずれかの
■メタキャラクタの説明
*^は文字列の先頭や改行文字の直後にマッチ
/^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
*シンボルは文字列より高速処理ができます。
文字列はい対してパターン照合を行うミニ言語。
■| パイプメタキャラクターはいずれかの
■メタキャラクタの説明
*^は文字列の先頭や改行文字の直後にマッチ
/^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 件のコメント:
コメントを投稿