プログラミングの記録

Who Wrote Holden Caulfield?

正規表現。量指定子 オプション。疑問符、クエスチョンマーク、 ? (Ruby: each, =~)

概要

量指定子: オプションの疑問符の前の文字 (例: colou?r の u) は、

正規表現のその位置に現れることが認められているが、

その文字がそこになかったとしてもマッチは成功したとみなされる。

(例: color でも colour でもマッチするということ)

ここでは例えば、7 月 4 日を表す英文文字列の正規表現を作成する。

Ruby コード

re_question_mark1.rb

#!/usr/bin/env ruby


def re_q_m1_heredoc
  <<~EOL
  量指定子: オプション
  クエスチョンマーク ?
  疑問符の前の文字は正規表現のその位置に現れることが認められているが、
  その文字がそこになかったとしてもマッチは成功したとみなされる。

  ここでは例えば、74 日を表す英文文字列の正規表現。

  (July|Jul) (fourth|4|th) の別の書き方。

  EOL
end

puts re_q_m1_heredoc


puts '-'*79


def re_q_m1
  re = /July? (fourth|4(th)?)/

  my_string_arry = ['July fourth', 'July 4', 'July 4th',
                    'Jul fourth', 'Jul 4', 'Jul 4th']

  my_string_arry.each do |my_str|
    if my_str =~ re
      puts "#{my_str}\nマッチしました。\n\n"
    else
      puts "#{my_str}\nマッチしませんでした。\n\n"
    end
  end
end

re_q_m1

出力

$ ruby re_question_mark1.rb
量指定子: オプション
クエスチョンマーク ?
疑問符の前の文字は正規表現のその位置に現れることが認められているが、
その文字がそこになかったとしてもマッチは成功したとみなされる。

ここでは例えば、7 月 4 日を表す英文文字列の正規表現。

(July|Jul) (fourth|4|th) の別の書き方。

-------------------------------------------------------------------------------
July fourth
マッチしました。

July 4
マッチしました。

July 4th
マッチしました。

Jul fourth
マッチしました。

Jul 4
マッチしました。

Jul 4th
マッチしました。

参考文献

詳説 正規表現 第3版

詳説 正規表現 第3版