- Home ›
- Ruby正規表現の使い方 ›
- 位置の指定 ›
- HERE
行の先頭(^)
指定したパターンが行の先頭にある場合だけマッチするようにするにはメタ文字の1つである「^」を使います。「^」自身は特定の文字にマッチするものではなく行の先頭の位置にマッチします。
書式は次の通りです。
/^パターン/
具体的な例で考えてみます。「abcdef」と「defabc」と言う2つの文字列に対してパターンを「/abc/」と指定した場合にはどちらの文字列にも「abc」は含まれているため、どちらもマッチします。
○ abcdef ○ defabc
これに対してパターンを「/^abc/」と記述した場合は、行の先頭に位置に「abc」がある場合だけマッチします。よって「abcdef」はマッチしますが「defabc」はマッチしません。
○ abcdef × defabc
具体的には次のように記述します。
str = "defabc" if /^abc/ =~ str then print("マッチします¥n") else print("マッチしません¥n") end
なおRubyにおいてはメタ文字「^」は文字列の先頭だけではなく行の先頭にマッチします。つまり1つの文字列の中に改行が含まれていた場合、改行された行の先頭にもマッチします。
× defabc ○ def¥nabc
他のプログラミング言語の場合にはメタ文字「^」は行頭ではなく文字列の先頭にだけマッチする場合がありますので注意して下さい。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku require "kconv" def check(str) print(Kconv.tosjis(str + " は ^abc に")) if /^abc/ =~ str then print(Kconv.tosjis("マッチします¥n")) else print(Kconv.tosjis("マッチしません¥n")) end end check("abcdef") check("defabc") check("abc¥ndef") check("def¥nabc")
上記のプログラムを「test1-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )