TWクラブ【BloodyRosary】@10.正規表現
正規表現とは、まぁ、SQLのLikeみたいなもん。それが拡張された感じ。
例
if ($word =~ /a/) $word に a が含まれていれば『真』
if ($word !~ /a/) $word に a が含まれていれば『偽』
if ($url =~ m|http://|) mを最初につけると、その文字が区切り文字になる。
この場合、『/』ではなく、『|』が区切り文字になっている。
・s/パターン/置換文字列/
「パターン」にマッチする文字列を「置換文字列」に置き換える
例
$word = "This is a pen.";
$word =~ s/pen/book/; pen を探し出し、book に置き換える
print "$word\n";
<出力結果>
This is a book.
・tr/変換対象の文字/変換後の文字/
「変換対象の文字」をスキャンして「変換後の文字」にすべて変換する
$word = 'apple';
$word =~ tr/a-z/A-Z/; a-z つまり小文字を A-Z 大文字に変換する
print "$word\n";
<出力結果>
APPLE
$word = 'apple';
$count = $word =~ tr/a-z/A-Z/; 変換した文字数取得
print "$count\n";
<出力結果>
5
(変換した文字数が5個のため)
split関数
例
$word = "apple:banana:orange";
@word = split(/:/, $word); $wordにある「:」を探し、それを区切りとして配列の@wordに格納
print "@word\n";
<出力結果>
apple banana orange
join関数
例
@word = ("apple", "banana", "orange");
$word = join ":", @word; @wordにある文字すべてを、「:」でくっつけて$wordに格納
print "$word\n";
<出力結果>
apple:banana:orange
正規表現は内容が多すぎるため、こちらを参照したほうがよさげ
http://www.kent-web.com/perl/chap7.html
その他
最後につける文字
g 繰り返しマッチする
i 大文字と小文字の区別をしない
o 変数展開を1度だけ行う
m 文字列を複数行として扱う (これは\nとかあったとき用)
s 文字列を単一行として扱う
x 拡張正規表現を行う
検索文字内に入れる文字
\ 直後の文字をエスケープ メタ文字を検索する場合に使う
^ 先頭にマッチ
. 改行を除く任意の1文字
$ 末尾にマッチ
| 選択 (a|b|c とやると、a,b,cのどれかにマッチすればおk)
( ) グループ化 (特殊変数 ( $ + 数字 ) に、マッチした順に代入できる)
[ ] 指定内の任意表現 (囲んだ文字のいずれかをマッチさせる [0-9]など)
* 直前の文字を0回以上にマッチ
=+ 直前の文字を1回以上にマッチ
? 直前の文字を0又は1回にマッチ
{n} 直前の文字をn回にマッチ
{n,} 直前の文字をn回以上にマッチ
{n,m} 直前の文字をn回以上、m回以下にマッチ
*? 直前の文字を0回以上に最短マッチ
+? 直前の文字を1回以上に最短マッチ
?? 直前の文字を0又は1回に最短マッチ
{n}? 直前の文字をn回に最短マッチ
{n,}? 直前の文字をn回以上に最短マッチ
{n,m}? 直前の文字をn回以上、m回以下に最短マッチ
(↑の?がついたやつは、文字列の始めから検索し、マッチした文字までを表示)
\w 英字、数字、アンダースコア。[a-zA-Z0-9_]に同じ。
\W 英字、数字、アンダースコア以外の文字。[^a-zA-Z0-9_]に同じ。
\d 数字。[0-9]に同じ。
\D 数字以外の文字。[^0-9]に同じ。
\t タブ
\r リターン(復帰文字)
\n 改行
\f ラインフィード(改ページ)
\s スペース。[\r\t\n\f]に同じ。
\S スペース以外の文字。[^\r\t\n\f]に同じ。
\a アラーム(ベル)
\d バックスペース
\e エスケープ
\0 + 数字 8進法で表すASCII文字。( ex. \033, \040 など )
\x + 英数字 16進法で表すASCII文字。( ex. \x1b, \x00 など )
\c[ コントロール文字
\l 次の1文字を小文字にする
\u 次の1文字を大文字にする
\L \Eまでの文字列を小文字にする
\U \Eまでの文字列を大文字にする
\E 変更の終わり
\Q \Eまでの文字列で正規表現のメタ文字を文字にみなす
\b 単語の境界にマッチする
\B 単語の境界以外にマッチする
\A 文字列の最初にマッチする。メタ文字 ^ に同じ。
\Z 文字列の最後にマッチする。メタ文字 $ に同じ。
$ + 数字 グループ化したパターンを後で参照する。( ex. $1, $2, $3, ... )
\ + 数字 上記に同じ。( ex. \1, \2, \3, ... )
$& マッチした文字列全体
$` マッチした文字列の前にあるすべての文字列
$' マッチした文字列の後にあるすべての文字列
Perl目次に戻る
別館TOPに戻る
ブログに戻る

Presents by 【BloodyRosary】
Copyrights (C) NEXON Corporation and NEXON Co., Ltd.
All Rights Reserved.