マッチ


 ひまわりは、ワイルドカードを使った文字列のマッチングが使えます。

 もちろん、ワイルドカードより高度な正規表現のマッチも使えますが、正規表現は、初心者にとっては複雑すぎて、なかなか分かりにくいと思います。しかし、ワイルドカードは、ルールが単純ですから、初心者にも難なく使いこなせるようになると思います。


マッチ

 さて、ワイルドカードとか、マッチングとか、カタカナを並べられても、イメージがつかみにくいと思いますので、この命令の簡単な使い方から見ていきましょう。
 ある日、私は、おじいさんに呼ばれました。
おじいさん「おい、あれって、誰だっけ?」

「え?あれじゃ、分からないよ。」

おじいさん「ううむ、誰じゃったかのぅ。この年になるとなぁ。確か、[]なんとか[]、っていう芸能人だけど、ううむ。なんだったかなぁ・・・」

「あぁ、松たか子ね。」

おじいさん「違う、違う、そんな名前じゃなかった・・・。」

「じゃ、誰?」

 こんな場合、お手上げですね。芸能人の専門家なら、一瞬で、5,6人の、[]なんとか[]を言えるのでしょうけど、私のような、めったにTVを見ないものは、さっぱり出てきません。でも、インターネット世代の申し子である僕らは、検索エンジンとひまわりがあれば、さっさと見つけることが出来ます。

Googleで検索・・・
Gooで検索・・・
Yahooで検索・・・あ、出てきた。
下萌 」「嶋菜々 」「たか 」「田聖 」・・・

 ここでは、簡単に名前が出てしまいましたが、うまく出なかったとしましょう。芸能人の名前一覧があって、その中から、[松]なんとか[子]を、ピックアップするプログラムを作ってみましょう。

 こんなとき使うのが、ワイルドカードを使った文字列マッチです。
「松浦亜弥
松崎ナオ
松澤由美
松田樹利亜
松田聖子
松任谷由実
松たか子
松井友香
松岡由樹
松坂紗良
松下萌子
松嶋菜々子
松田彩香
松田純」
を、反復
  それを、「松*子」で、マッチ
  表示。
)
これを、実行すると、
松田聖子
松たか子
松下萌子
松嶋菜々子
が、表示されます。
おじいさんに、この中に目的の人物がいるか聞いてみましょう。

「どう、この4人の中に居る?」
おじいさん「おお、そうじゃ。松田聖子じゃった。」
「ふ〜ん、それで、松田聖子がどうしたの?」
おじいさん「今度ディナショーが見たいのなぁと思ってね。」
「それは、忘れずに、見られるといいね・・・」

 この小話から、ワイルドカードの使い方を理解して頂けたでしょうか?

 このように、「松*子」のように書くと、"*"の文字で、「松田聖子」・「松たか子」・「松嶋奈々子」を、表すことが出来るのです。便利ですよね。

 ひまわりのマッチ命令で使えるワイルドカードは、以下のとおりです。

記号 意味 使用例 マッチする文字例
* 任意の文字(0文字のこともある) *ス イス、アイス、チョイス
? 任意の一文字 ?だ 君だ、しだ、ひだ
# 任意の数字一文字 〒###-#### 〒100-1234
[str] strに指定した文字のどれか一文字 う[あ-ん]ぎ うさぎ、うなぎ
[!str] strに指定した文字以外のどれか一文字 ドラ[!あ-ん] ドラム、ドライ
[*str] strに指定したいずれかの文字の繰り返し お[*あ-ん]ん おじさん、おじいさん、おばさん
[=ab|cd] abかcdのどちらかの文字列 [=誕生|日曜]日 誕生日、日曜日

部分的なピックアップ

 次に、ワイルドカードの指定したパターンの一部分だけを、ピックアップする機能を紹介します。これは、例えば、電話番号から市外局番だけを取り出したい時などに、威力を発揮します。
「tel:0532-41-0000」を、「tel:(*)-」で、マッチ
(それ#1)を、表示
上のように実行すると、「tel:0532-」までがマッチし、「それ#1」には、( ) で括られた部分(愛知県豊橋市の市外局番)の、「0532」を表示します。(1つだけ取り出します。)

 また、下4桁だけを得たい場合は、以下のように書きます。
「tel:0532-41-0000」を、「*:*-*-(*)」で、マッチ。
(それ#1)を、表示

ちょっとずつマッチ

『マッチ』命令は、指定文字列の頭から、パターン文字列分だけ読んで、残りは、指定文字列へと返します。
メニューは、「ラーメン、うどん、カレー」
メニューを、「*、」で、マッチ。
それを、表示。
メニューを、表示。’残りの文字列を表示

戻る