0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

paizaラーニング解答: 正規表現メニュー[Ruby]

Posted at

正規表現メニュー

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][^\[\]]*?\./)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?