キッズプレート、パスタおかわり

プログラミングやデジモノについてあれこれ
--.--.-- --:--|カテゴリ:スポンサー広告| コメント(-)

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2015.03.13 13:30|カテゴリ:Perlコメント(1)

イメージで感じて覚える正規表現 その1


 正規表現についてよく質問されるもので次のようなものがあります。

「文字クラスの中のメタ文字ってエスケープ必要なんですか?」

 答は不要。でもそれだけじゃあつまらないですね。では今回はもうちょっと踏み込んで文字クラスのイメージを考えてみましょう。

 前回は、正規表現を表す最小パターンは一文字を表現する文字クラスということをご説明させていただきました。さらに一歩踏み込んで理解を深めてみましょう。よく、

「メタ文字であるピリオドをマッチさせるためにはバックスラッシュでエスケープしましょう」

 という説明があります。では「[ ]」の中で使うピリオドはどうでしょうか? 「[ ]」の中でピリオドを指定する場合、バックスラッシュによるエスケープは必要ありません。なぜなら「[ ]」は文字クラスであり、それ全体で1文字を表すものです。その内側に「全ての文字を表す文字クラス」があっては、

「[ ]」の存在意義が根底から覆ってしまいます!

 そのような矛盾が生じてしまうのでピリオドは「[ ]」の中ではただの文字として認識されます。同様なものにマッチした文字列をキャプチャする「( )」がありますね。文字をキャプチャするはずの「( )」が一文字を表す文字クラスの内側にあっても、

「おいおい、あんた何をキャプチャするつもりだい?」

 ということで「()」もただの文字として認識されます。量指定子である「+」も基本的には「直前の文字クラスの繰り返し」ですから文字クラスの内側に入った場合はメタ文字として意味をなさなくなり、ただの文字として認識されます。
 
 このように、一文字を表す文字クラスを意識して考えると、

「あー、そもそも何らかの文字の繰り返しや範囲を指定してるのに、一文字を表す指定の内側に入ったら意味無いよね」

 ということがイメージ出来るのではではないでしょうか。
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
[ 2015/03/25 23:12 ] [ 編集 ]
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

ひらくん Author:ひらくん
どもども、ひらんくんどす。
日々まったり過ごしております。
仕事はDTP関連のスプリクト&アプリケーション開発。
Follow happyscript on Twitter

ブログ内検索



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。