でばぐめ -IT技術メモ- -4ページ目

でばぐめ -IT技術メモ-

主にハードウェア/ソフトウェアのプログラミングに関するブログです。

大文字と小文字を区別せずパターンマッチを行うには、/i修飾子を指定します。


入力されたYes, yes, YESにもマッチさせたい場合

chomp($_ = );
if(/\byes\b/i){
  print $_;
}

/i修飾子のようなオプション修飾子は、正規表現の閉じデリミタの直後に指定します。

初めてのPerl 第5版/Randal L. Schwartz
¥3,780
Amazon.co.jp
初心者にもわかりやすく書かれていますが、
全くの初心者というより、少しPerlに慣れてきた時に威力を発揮する本です。
簡単なテキスト操作のためにPerlを使用するのであれば十分事足ると思います。

PATHやURLのパターンマッチや置換を行う場合、PATHもURLも"/"で
区切られているため、文字列内の"/"をエスケープする必要があります。

たとえば、"http://ameblo.jp/debugme/ " にマッチさせようとした場合


/^http:\/\/ameblo.jp\/debugme\//

と"/"の前にエスケープ"\"をつけます。

m(パターンマッチ演算子)を使用すれば別デリミタで書くことができます。


m{^http://ameblo.jp/debugme/}

任意のデリミタの対によって、パターンをはさむことができます。

デリミタは、パターン中に現れない文字を選べば、可読性もよくなります。


m[^http://ameblo.jp/debugme/]
m%^http://ameblo.jp/debugme/%
m#^http://ameblo.jp/debugme/#

s(置換演算子)での置換でも"///"以外の別デリミタを使用できます。

/usr/binを/usr/local/binに置換したい場合


s|/usr/bin|/usr/local/bin|g;
s{/usr/bin}{/usr/local/bin}g;
s#/usr/local/bin#g;

初めてのPerl 第5版/Randal L. Schwartz
¥3,780
Amazon.co.jp
初心者にもわかりやすく書かれていますが、
全くの初心者というより、少しPerlに慣れてきた時に威力を発揮する本です。
簡単なテキスト操作のためにPerlを使用するのであれば十分事足ると思います。

Perlのマッチ変数を利用して文字列の一部を取り出します。


カッコで囲んだパターンがマッチした部分を正規表現メモリに記憶し、
正規表現メモリの内容は$1,$2...のような特殊変数に格納されています。


初めてのPerl に掲載されてあるコードを参考にすると、


$_ = "Hellow there, neighbor";
if(/(\S+) (\S+), (\S+)/) {
  print "\$1: $1\n";
  print "\$2: $2\n";
  print "\$3: $3\n";
}

結果は下のようになります。

$1: Hellow
$2: there
$3: neighbor

コンマは記憶するカッコの外側にあるので、メモリ($2)に含まれません。
このテクニックを使えば、必要なものだけをメモリに取り込めます。


関連書籍



初めてのPerl 第5版/Randal L. Schwartz
¥3,780
Amazon.co.jp

初心者にもわかりやすく書かれていますが、

全くの初心者というより、少しPerlに慣れてきた時に威力を発揮する本です。

簡単なテキスト操作のためにPerlを使用するのであれば十分事足ると思います。


プログラミングPerl〈VOLUME1〉/ラリー ウォール
¥5,565
Amazon.co.jp

ページ数も多く、価格もそれなりなので、Perlについて詳しく知りたい人向けです。

"初めてのPerl"と重複する箇所も多々あるので、これからがっちりPerlを身につけたい人は

こちらをおすすめします。