正規表現メニュー
STEP: 1 文字列の検索
s = gets.chomp
puts s.index(/paiza/)
STEP: 2 メタ文字の検索
s = gets.chomp
puts s.index(/\\\(\^\ \.\ \^\)\//)
STEP: 3 任意文字の検索
s = gets.chomp
puts s.index(/p..za/)
STEP: 4 クラス指定文字の検索
s = gets.chomp
puts s.index(/Math[123][ABC]/)
STEP: 5 クラスの否定の検索
s = gets.chomp
puts s.index(/[^0123456789]...../)
STEP: 6 範囲指定文字の検索
s = gets.chomp
puts s.index(/[A-Z]\-[0-9][0-9][ab]/)
STEP: 7 0 回または 1 回の出現の検索
s = gets.chomp
puts s.index(/clang-?format/)
STEP: 8 0 回以上の繰り返しの検索
s = gets.chomp
puts s.index(/congratulations!*/)
STEP: 9 1 回以上の繰り返しの検索
s = gets.chomp
puts s.index(/ID-[0-9]+/)
STEP: 10 指定回数の繰り返しの検索
s = gets.chomp
puts s.index(/CVE-[0-9]{4}-[a-zA-Z0-9]+/)
STEP: 11 下限指定の繰り返しの検索
s = gets.chomp
puts s.index(/To be continued\.{3,}/)
ジョジョの次回予告ミームを思い出した。
STEP: 12 上限指定の繰り返しの検索
s = gets.chomp
puts s.index(/database_.{,5}\.db/)
御御御付けで「おみおつけ」。
STEP: 13 範囲指定の繰り返しの検索
s = gets.chomp
puts s.index(/\$[0-9]{3,5}/)
STEP: 14 OR の検索
s = gets.chomp
puts s.index(/accept|reject|pending/)
STEP: 15 グループを利用した OR の検索
s = gets.chomp
puts s.index(/[^ ]*(\.jpg|\.png)/)
STEP: 16 グループを用いた繰り返しの検索
s = gets.chomp
puts s.index(/(%[a-zA-Z0-9]{2}){2,}/)
STEP: 17 行頭の検索
s = gets.chomp
puts s.match(/^Re:/) ? "Yes" : "No"
STEP: 18 行末の検索
s = gets.chomp
puts s.index(/\\\(.*\\\)$/)
FINAL問題 エスケープシーケンスの検索
s = gets.chomp
puts s.index(/\w{3}-\d{3,4}/)
・\d 半角数字 1 文字 (d は digit の略)
・\D 半角数字以外の 1 文字
・\s 空白文字 (スペース, タブ, 改行) 1 文字 (s は space の略)
・\S 空白文字以外の 1 文字
・\w 半角英数字記号 1 文字 (w は word の略)
・\W 半角英数字記号以外の 1 文字
・\n 改行文字
・\t タブ文字
・\A 文字列の先頭
・\Z 文字列の末尾
STEP: 1 文字列の検索
s = gets.chomp
puts s.index(/[\da-f]{64}/)
puts s.match(/[\da-f]{64}/)
STEP: 2 文字列の全検索
s = gets.chomp
puts s.scan(/[^ ]+@[^ ]+/)
STEP: 3 文字列の置換
s = gets.chomp
puts s.sub(/(\d{2})\.(\d{2})/, '\1/\2')
STEP: 4 文字列の全置換
s = gets.chomp
puts s.gsub(/raw_input/, 'input')
STEP: 5 文字列の削除
s = gets.chomp
puts s.sub(/\/\*.*\*\//, '')
STEP: 6 文字列の全削除
s = gets.chomp
puts s.gsub(/import \w+/, '')
FINAL問題 文字列の分割
s = gets.chomp
puts s.split(/-{3,}/)
STEP: 1 最短一致と 0 回または 1 回の繰り返し
s = gets.chomp
puts s.index(/G[A-Z]??C/)
puts s.match(/G[A-Z]??C/)
STEP: 2 最短一致と 0 回以上の繰り返し
s = gets.chomp
puts s.index(/\{.*?\}/)
puts s.match(/\{.*?\}/)
STEP: 3 最短一致と 1 回以上の繰り返し
s = gets.chomp
puts s.index(/\#.+? /)
puts s.match(/\#.+? /)
STEP: 4 最短一致と指定回数の繰り返し
s = gets.chomp
puts s.index(/\|.{3,10}?\|/)
puts s.match(/\|.{3,10}?\|/)
STEP: 5 キャプチャとその回避
s = gets.chomp
t = s.match(/(?:n|st|vac)ation(\w+)/)
puts t[0]
puts t[1]
もっとスマートな書き方ありそう・・・。
STEP: 6 肯定先読み
s = gets.chomp
puts s.index(/\d+(?=KB|MB|GB|TB)/)
puts s.match(/\d+(?=KB|MB|GB|TB)/)
STEP: 7 否定先読み
s = gets.chomp
puts s.index(/Java(?!Script)/)
puts s.match(/Java(?!Script)/)
STEP: 8 肯定後読み
s = gets.chomp
puts s.index(/(?<=Date: )(\d|\/)+/)
puts s.match(/(?<=Date: )(\d|\/)+/)
FINAL問題 否定後読み
s = gets.chomp
puts s.index(/(?<!\[Feature\] )[A-Z][^\[\]]*?\./)
puts s.match(/(?<!\[Feature\] )[A-Z][^\[\]]*?\./)