このエントリーをはてなブックマークに追加

正規表現 - 文字列の一致、ereg、preg

更新:

文字列の一致、ereg、pregなど、正規表現について。

正規表現の修飾子(Perl版)
・修飾子
	g:一致するものを全て探す
	o:1回だけ一致するものを探す
	i:大文字小文字の区別なし
	s:文字列を1行とみなす
	m:文字列を複数行とみなす
	e:文字列を式とみなす
	x:拡張正規表現(空白が無効)
・メタ文字
	.:任意の1文字
	*:直前パターン0回以上繰り返し
	+:直前パターン1回以上繰り返し
	?:直前パターン0または1回以上繰り返し
	^:文字列の先頭([]内で使った場合、~以外になる)
	$:文字列の最後
	\:エスケープ(/などをエスケープするときに使う)
	|:論理和
	\d:数字。[0-9]
	\D:数字以外。[^0-9]
	\w:英数字。[_a-zA-Z0-9]
	\W:英数字以外。[^_a-zA-Z0-9]
	\s:空白。[ \t\n\r\f]
	\S:空白以外。[^ \t\n\r\f]
	\A:文字列の先頭。^と同じ。
	\Z:文字列の最後。$と同じ。または\z。
	-:[]内で範囲を示す。


正規表現
・pregはPerl互換、eregはPOSIX拡張(廃止)
・URLチェック
	・preg 正規表現の両端をスラッシュで囲む
	if(preg_match("/^https?:\/\/[\w-.!~*'\" ();\/?:@&=+\$,%\#]+/", $url))
		//一致
	}else{
		//不一致
	}



文字列を抜き出す(抽出)
・preg_match(正規表現, 対象の文字列, [結果], [フラグ])
・preg_replace(正規表現, マッチした部分の置換後の文字, 対象の文字列, [回数])
・携帯電話の固体識別情報を抜き出す
	//$useragent = "DoCoMo/1.0/X503i/c10/ser12345678901";
	//$useragent = "DoCoMo/2.0 N901iS(c100;TB;W24H12;)";
	//$useragent = "DoCoMo/2.0 N901iS(c100;TB;W24H12;ser123456789012345;icc12345678901234567890)";

	//例1
	$result = preg_match("/^.+ser([0-9a-zA-Z]+).*$/", $useragent, $match);
	$id = $match[1];
	
	//例2
	$id = preg_replace("/^(.+ser)([0-9a-zA-Z]+)(.*)$/", "$2", $useragent);


全角文字の判定
・mb_ereg_match(正規表現, 変数, [オプション])
	$test = "東京都港区";
	if(mb_ereg_match("^東京", $test)){
	
	}

このエントリーをはてなブックマークに追加