正規表現

メタ文字 , 正規表現としての意味

                                                                                                                              • -

[ - ] 範囲指定した文字に一致(文字クラス)
[^ - ] 範囲指定した文字以外に一致
^ 行頭に一致
$ 行末に一致
. 改行を除く任意の1文字に一致
(?!単語名). 単語名が後に続いていない任意の1文字
(?=単語名). 単語名が後に続いている任意の1文字
* 直前のパターンの0回以上の繰り返しに一致
+ 直前のパターンの1回以上の繰り返しに一致
? 直前のパターンがないか、または1回に一致
| | の前か後に書いたパターンのいずれかに一致
\ 特殊な意味を消し文字そのものの意味にする(エスケープ)
( ) ( )で囲った正規表現のパターンを登録する(部分文字列)
\1,\2.. 登録した部分文字列を参照する(後方参照)


*? 直前の文字を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, ... )
$& マッチした文字列全体
$` マッチした文字列の前にあるすべての文字列
$' マッチした文字列の後にあるすべての文字列

                                                                                                                                      • -

[0-9] 半角数字に一致
[0-9] 全角数字に一致
[A-Z] 半角アルファベット大文字に一致
[a-z] 全角アルファベット小文字に一致
[A-Za-z] 半角アルファベット大小文字に一致
[ぁ-んー−] ひらがなに一致
[ァ-ヶー−] 全角カタカナに一致
[0-90-9A-Za-zA-Za-z] 全・半角の数字とアルファベット
[ -~] ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ `
a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
[^0-90-9] 数字以外全部の文字
^☆ 行頭に☆

                                                                                                                                  • -

■preg_replace($pattern, $replacement, $string);
$string = preg_replace("/ /", $rep, $string);

                                                                                                                                  • -

■preg_mach("/ /",$str,$match) マッチすればtrue しなければfalseを返す
$match[0] = 一致した全体
$match[1] = 1個目の()の部分にマッチしたもの
'で囲まれた部分
if(preg_match("/\'([^']+)\'/",$data,$match))



                                                                                                                                    • -

■preg_match_all("/ /",$str,$match)
$match[0][0] = マッチした全体の1個目
$match[0][1] = マッチした全体の2個目

$match[1][0] = 1個目の()で囲まれた部分にマッチした1個目
$match[1][2] = 1個目の()で囲まれた部分にマッチした2個目

                                                                                                                                    • -

■サンプル
■''で囲まれた部分  test と ' と , を含まない
"/\'(?:(?!test|\'|,).)*\'/"