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に戻る
ブログに戻る

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