[PR]500000円と車プレゼント:今なら無料で現金と新車が当たる大抽選!




 



Perl 09
正規表現
[HOME] - [Perl_Index] - [BACK] - [NEXT]



メタ文字
2002/07/12 作成
-----------

メタ文字(「メタキャラ」とも言うらしい)とは、その文字自体以外の特殊な意味を持つ文字の事です。
「数字一文字」とか「1つ以上連続している文字」みたいな物があります。

「メタ文字(meta character)」の「メタ(meta)」とは、「すべての、全部の、そうなべする、網羅する、メタ〜」という意味だそうで、つまり、メタ文字を日本語で言うと
「全ての文字、全部の文字、そうなべする文字、網羅する文字、メタ文字」
という感じになります。
要するに「指定した条件に見合う全ての文字」という事でしょうか。
「数字一文字」は「0〜9全ての数字一文字」とも言えますね。納得。

これはパターンマッチにも使う事が出来ます。
特定のキーワードではなく、いくつか条件を決めて文字列をマッチングしたい時に便利なわけです。

ではPerlで使われるメタ文字一覧
メタ文字意味
. とにかく一文字を示す
* 直前の文字が0回以上連続している事を示す
+ 直前の文字が1回以上連続している事を示す
? 直前の文字が無いか、1回現れる事を示す
^ 文字列の先頭を示す
$ 文字列の末尾を示す
{}{}内の数だけ直前の文字が連続している事を示す
()正規表現のグループ化
[][]内の任意の一文字いずれかを示す
\d数字一文字を示す
\D数字以外の一文字を示す
\w英数文字 又はアンダーバー一文字
\W英数文字 又はアンダーバー以外の一文字
\s空白文字(半角スペース、タブ、改行文字)一文字を示す
\S空白文字(半角スペース、タブ、改行文字)以外の一文字を示す
\n改行文字(nは「new line」のnらしい…)一文字を示す
\r復帰文字(キャリッジリターン)一文字を示す
\tタブ一文字を示す
\f改ページ文字一文字を示す

使い方は次の「正規表現」で。


正規表現
2002/07/12 作成
-----------

正規表現とは…『いくつかの文字列を一つの形式で表現するための表現方法』だそうです…
要するにメタ文字を使った文字列表現の事ですね。

例を挙げてみます。
マッチ...
「.」はとにかく一文字を示すので、「マッチでぇす」でも「マッチで〜す」でも「マッチですよ」でも「マッチマッチ」でもどれでもマッチするという事になりますね。
これが正規表現です。

では、Perlでの使用例。
$str = "aabcdef"
if( $str =~/aa.*/ ){
  print "マッチでした";
}
「.」は「とにかくなんでもいいから一文字を示す」、
「*」は「直前の文字が0回以上連続している事を示す」なので、
「.*」は「とにかくなんでもいい一文字が0回以上連続する事を示す」
 →「文字が0回以上連続する事を示す」という意味になります。

ここではif文で$strと「aa.*」を比較 つまり
「aabcdef」という文字列と、「aaに続いて文字が0回以上連続している」という正規表現をマッチングしています。

対象文字列の「aabcdef」はこの条件を満たしているのでif文は真となり、「マッチでした」と結果が出力される事になります。


全てのメタ文字の用法を説明していてはキリが無いので、別の機会に詳しくやってみます…


正規表現のグループ化
2002/07/12 作成
-----------

$str = "abc,def,ghi";
if( $str =~/(.*),(.*),(.*)){
  $group1 = $1;
  $group2 = $2;
  $group3 = $3;
}
「()」内のマッチした値は、特殊な変数「$1,$2,$3…」に格納されていきます。これをグループ化といいます。
上の例では$group1〜3の変数にそれぞれ「abc」「def」「ghi」と格納されていくことになります。




[HOME] - [Perl_Index] - [BACK] - [NEXT]

 









[PR]最新の着うた全部が無料!:何曲でもポイントなしの取り放題