独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

<< RGSS奮闘記11:文字色をカスタマイズするその1 | main | RGSS奮闘記13:文字色をカスタマイズするその3 >>

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] RGSS奮闘記12:文字色をカスタマイズするその2

〜前回のあらすじ〜
直観的に行動できるようにするために理論武装する、というプチ矛盾。



まずは簡単に正規表現の説明。
『正規表現』とは一般に、特定の記法に基づいた文字列を使用することで文字列そのものではなく文字列のパターンを指定する方法のことを言う。また、その特定の文字列のことも「パターン」と呼ぶ。
たとえば「先頭が"abc"でそのあと数字が4〜6文字続き、さらに"xyz"が続いて文字列の末尾がくる」というような指定ができる。
Rubyではスラッシュで挟まれた文字列を正規表現とみなす。間違えてダブルクォートで挟んだりすると意味をなさないので注意。
また、「マッチする」という表現が出てくるが、これは単純に言えば「ある文字列に対しその正規表現が当てはまる」という意味である。

それを踏まえて今回の解説。
正規表現やメソッドの意味については逐次説明を加えていく。

さて、今回有効にしようとしているのは「"FF0000"」のようなカラーコードの文字列である。ということは、「0〜9の数字またはa〜f(A〜F)の文字のうちのいずれかが6文字並んだもの」と言い換えることができる。これを段階的に追いながら正規表現を作ってみよう。

まず、「任意の複数の文字のいずれか」という表現には『文字クラス』を使用する。指定したい文字群をブラケット([]のこと)で囲むことで「いずれか」の表現が可能。
次に、文字クラスの中で「0から9」「aからf」という連続した文字を指定するには、先頭と末尾をハイフンでつなぐことで短く書くことができる。
ということでまずはこうだ。

/[0-9a-fA-F]/
これで「0〜9の数字またはa〜f(A〜F)の文字のうちのいずれか」を指定することができる。

続いて「6文字並んだもの」の部分。これは「範囲指定繰り返し制御」を使う。
名前は大層だが、何のことはなく「m回」、「m回以上」、「m回以上n回以下」を指定する記法だ。これはブレース({}のこと)を使い「{m}」、「{m,}」、「{m,n}」のように書く。今回は6回限定なので「{6}」となる。
ということで、「6文字並んだもの」を追加して以下の通り。
/[0-9a-fA-F]{6}/
これでカラーコードの文字列にマッチする正規表現の完成である。
……と、言いたいところだが、これではまだ不十分だ。
正規表現には「オプション」という仕組みがある。後ろのスラッシュの後に特定の文字を記述することで正規表現の機能をほんの少しだけ拡張できる。
ここでは、「i」をつけて「アルファベットの大文字小文字を無視する」というオプションを使用する。
すると今回の正規表現はこうなる。
/[0-9a-f]{6}/i
今度こそ出来上がりだ。

次回は、この正規表現にマッチした文字列を分解する部分。


タグ:[Ruby] [RGSS] [素材] [Window_Base]

| 2011.01.12 Wednesday 23:57 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 23:57 | - | - |

コメント

コメントする






この記事のトラックバックURL

トラックバック

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< October 2019 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM