プログラミングの記録

Who Wrote Holden Caulfield?

正規表現。単語境界、非単語境界。\b, \B, Word Boundaries (Ruby: Array, each, =~, ヒアドキュメント)

概要

単語単体へマッチする正規表現を作成する。

単語境界、非単語境界。

ここでは例えば、英単語 cat を対象とする。

Ruby コード

re_word_boundaries1.rb

#!/usr/bin/env ruby


def re_w_bound1_heredoc
  <<~EOL
  My cat is brown. の cat にはマッチし、category や bobcatにはマッチしない正規表現。
  また、staccato に含まれている cat にはマッチし、上記 3 つにはマッチしない正規表現。

  EOL
end

puts re_w_bound1_heredoc


puts '-'*79


def re_w_bound1
  # 単語境界: \b
  re_b = /\bcat\b/

  # 非単語境界: \B
  re_B = /\Bcat\B/

  my_string_arry = ['My cat is brown.', 'category', 'bobcat', 'staccato']

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

re_w_bound1

出力

$ ruby re_word_boundaries1.rb
My cat is brown. の cat にはマッチし、category や bobcatにはマッチしない正規表現。
また、staccato に含まれている cat にはマッチし、上記 3 つにはマッチしない正規表現。

-------------------------------------------------------------------------------
\b:
My cat is brown.
マッチしました。

\B:
My cat is brown.
マッチしませんでした。

\b:
category
マッチしませんでした。

\B:
category
マッチしませんでした。

\b:
bobcat
マッチしませんでした。

\B:
bobcat
マッチしませんでした。

\b:
staccato
マッチしませんでした。

\B:
staccato
マッチしました。

参考文献

正規表現クックブック

正規表現クックブック