- 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 )