2008-03-03から1日間の記事一覧

6.3 単語にマッチするパターン

文字列から単語を抽出したい。 プログラム例1 /\S+/; # 1個以上の空白文字以外の文字 /[A-Za-z']+/; # 1個以上の英字(大文字小文字)、アポストロフィ、ハイフン

6.2 文字にマッチするパターン

文字列を構成しているのがアルファベットだけかどうか確認したい。 # Unicodeのプロパティを使用 if ($var =~ /^\p{Alphabetic}+$/) { # または単に/^\pL+$/ print "var is purely alphabetic\n"; } # 上記以外の方法 if ($var =~ /^[^\W\d_]+$/) { print "v…

6.1 コピーと置換を同時に行う

# 2行にわける方法 $dst = $src; $dst =~ s/this/that/; # コピーと置換を同時に行う ($dst = $src) =~ s/this/that/;

6 パターンマッチ

パターンマッチ修飾子 修飾子 意味 /i 大文字と小文字を区別しない。 /x パターン内の空白文字を正規表現として解釈されないようにする。パターン内にコメントを挿入できるようになる。 /g グローバルマッチ/グローバル置換。マッチしたものをすべてを返す/…

6.5 パターンにn番目にマッチする文字列を見つける

/g修飾子とwhileループを使用して、マッチした回数をカウントしていきます。 $WANT = 3; $count = 0; while (/(\w+)\s+fish\b/gi) { if (++$count == $WANT) { print "The third fish is a $1 one.\n"; # 注意: このループをlastで抜けてはならない } } 繰り…

6.4 正規表現にコメントを付加する

use Socket; # inet_addrのロード s{ ( # $1にホスト名を格納 (?: # グループ化専用の丸括弧 (?! [-_] ) # アンダーバー、ハイフン以外の文字を探す [\w-] + # ホスト名 \. # ドメインを区切るドット ) + # これらのパターンを1回以上繰り返す [A-Za-z] # 次…