文字列の先頭にマッチする(\A)

メタ文字の「^」と「$」はそれぞれ行の先頭と末尾にマッチするものでしたが、文字列の先頭と末尾にマッチするものも用意されています。「\A」は文字列の先頭にだけマッチします。「^」との違いは文字列の中で改行が含まれていたとしても「\A」は改行後の先頭にはマッチしません。ここでは Ruby の正規表現で文字列の先頭にマッチするメタ文字の「\A」の使い方について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 10 日更新)

文字列の先頭にマッチする

メタ文字の \A は文字列の先頭にマッチします。書式は次の通りです。

/\Aパターン/

具体的な例で考えてみます。「abc\ndef」と「def\nabc」と言う2つの文字列に対してパターンを /^abc/ と指定した場合にはどちらの文字列にも行頭に「abc」は含まれているため、どちらもマッチします。

abc\ndef
○ def\nabc

これに対してパターンを /\Aabc/ と記述した場合は、文字列の先頭の位置に「abc」がある場合だけマッチします。よって「abc\ndef」はマッチしますが「def\nabc」はマッチしません。

abc\ndef
× def\nabc

具体的には次のように記述します。

str = "def\nabc"

if /\Aabc/ =~ str then
  puts("マッチします")
else
  puts("マッチしません")
end
サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

def check1(str)
  print(str + " は ^abc に")

  if /^abc/ =~ str then
    puts("マッチします")
  else
    puts("マッチしません")
  end
end

def check2(str)
  print(str + " は \\Aabc に")

  if /\Aabc/ =~ str then
    puts("マッチします")
  else
    puts("マッチしません")
  end
end

check1("abc\ndef")
check1("def\nabc")
check2("abc\ndef")
check2("def\nabc")

下記のように実行して下さい。

文字列の先頭(\A)

-- --

Ruby の正規表現で文字列の先頭にマッチするメタ文字の「\A」の使い方について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。