- Home ›
- Ruby正規表現の使い方 ›
- 位置の指定 ›
- HERE
文字列の先頭(¥A)
メタ文字の「^」と「$」はそれぞれ行の先頭と末尾にマッチするものでしたが、文字列の先頭と末尾にマッチするものも用意されています。「¥A」は文字列の先頭にだけマッチします。「^」との違いは文字列の中で改行が含まれていたとしても「¥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
print("マッチします¥n")
else
print("マッチしません¥n")
end
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku
require "kconv"
def check1(str)
print(Kconv.tosjis(str + " は ^abc に"))
if /^abc/ =~ str then
print(Kconv.tosjis("マッチします¥n"))
else
print(Kconv.tosjis("マッチしません¥n"))
end
end
def check2(str)
print(Kconv.tosjis(str + " は ¥¥Aabc に"))
if /¥Aabc/ =~ str then
print(Kconv.tosjis("マッチします¥n"))
else
print(Kconv.tosjis("マッチしません¥n"))
end
end
check1("abc¥ndef")
check1("def¥nabc")
check2("abc¥ndef")
check2("def¥nabc")
上記のプログラムを「test3-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )
RubyLife