__________________________________________________________________________ PHPで使用するPOSIX拡張正規表現メモ __________________________________________________________________________ POSIX 1003.2で定義されている。 英語表記:Extened Regular Expression(ERE)。 PHPの関数 ereg(), eregi(), ereg_replace(), eregi_replace(), split(), spliti() で使用可能。 ■ 使用可能なメタキャラクタとその意味 . 任意の文字一つにマッチ(改行も含む?) + 直前の文字の1文字以上の連続 * 直前の文字の0文字以上の連続 ? 直前の文字の0文字以上1文字以下の連続 {m,n} 繰り返しの回数を指定 記号「{」は直後に数字を置かない場合普通の文字として扱われる ^ 行の先頭 $ 行の最後 [ ] リスト中に存在しているいずれかの文字にマッチ 記号「-」で文字の繰り返し範囲を指定(下記ASCIIコード表参照) 記号「-」自身表す場合はリスト内の最初か最後に置く 記号「]」はリスト内の最初に置く 記号「[」はリスト内の任意の場所に置くことが出来る 記号「^」はリスト内の最初以外に置く *「-」はリストの最後、「]」は最初と決めておくと良い。 つまり[]^-]という記述をする。 記号「\」はエスケープ文字として扱われる 記号「\」自身は「\\」と記述する [: :] [ ]内で文字クラスを表す [:alnum:] アルファベットと(十進)数字 [:alpha:] アルファベット [:blank:] 空白文字(スペース、タブ等) [:cntrl:] 制御文字 [:digit:] 十進数字 [:graph:] 印字可能かつ表示可能な文字 (スペースは印字可能だが表示可能ではない) [:lower:] アルファベットの小文字 [:print:] 印字可能なキャラクタ(=制御文字以外のキャラクタ) [:punct:] 句読点 (通常の文字、数字、制御文字、スペース以外) [:space:] スペース、タブ、改ページ [:upper:] アルファベットの大文字 [:xdigit:] 十六進数字 [. .] [ ]内で照合順序の要素を表す(?) [= =] [ ]内で等価クラスを表す(?) [^ ] リストに存在していない文字一つにマッチ ( ) 文字列をひと塊として扱う マッチした文字列は後に \\1 などと参照が可能 | 左右どちらかの正規表現にマッチ その他 記号「.[$()|*+?{\」は記号「\」でエスケープする必要がある 複数マッチしたら文字数が多い方を返す ■ 文字コード表(ASCII) *00-1fは制御コード | 00 nul| 01 soh| 02 stx| 03 etx| 04 eot| 05 enq| 06 ack| 07 bel| | 08 bs | 09 ht | 0a nl | 0b vt | 0c np | 0d cr | 0e so | 0f si | | 10 dle| 11 dc1| 12 dc2| 13 dc3| 14 dc4| 15 nak| 16 syn| 17 etb| | 18 can| 19 em | 1a sub| 1b esc| 1c fs | 1d gs | 1e rs | 1f us | | 20 sp | 21 ! | 22 " | 23 # | 24 $ | 25 % | 26 & | 27 ' | | 28 ( | 29 ) | 2a * | 2b + | 2c , | 2d - | 2e . | 2f / | | 30 0 | 31 1 | 32 2 | 33 3 | 34 4 | 35 5 | 36 6 | 37 7 | | 38 8 | 39 9 | 3a : | 3b ; | 3c < | 3d = | 3e > | 3f ? | | 40 @ | 41 A | 42 B | 43 C | 44 D | 45 E | 46 F | 47 G | | 48 H | 49 I | 4a J | 4b K | 4c L | 4d M | 4e N | 4f O | | 50 P | 51 Q | 52 R | 53 S | 54 T | 55 U | 56 V | 57 W | | 58 X | 59 Y | 5a Z | 5b [ | 5c \ | 5d ] | 5e ^ | 5f _ | | 60 ` | 61 a | 62 b | 63 c | 64 d | 65 e | 66 f | 67 g | | 68 h | 69 i | 6a j | 6b k | 6c l | 6d m | 6e n | 6f o | | 70 p | 71 q | 72 r | 73 s | 74 t | 75 u | 76 v | 77 w | | 78 x | 79 y | 7a z | 7b { | 7c | | 7d } | 7e ~ | 7f del| ■ 関係ないけどついでに ISO-8859-1 米国やヨーロッパで使われている文字セット ISO-2022-JP JISコードの日本語文字セット Shift_JIS SJISコードの日本語文字セット EUC-JP EUCコードの日本語文字セット UTF-8 Unicode(UTF-8)の日本語文字セット UTF-16 Unicode(UTF-16)の日本語文字セット ■ 使用例( $stringは評価する文字列とします ) PHPという文字列が含まれていればTUREを返す ereg("PHP", $string) 数字で始まる場合にTRUEを返す ereg("^[0-9]", $string) 数字で終わる場合にTRUEを返す ereg("[0-9]$", $string) 文字列中に半角英数字以外の文字が含まれていればTRUEを返す ereg("[^0-9A-Za-z]", $string) PHPまたはphpという文字で終わる場合にTRUEを返す ereg("(PHP|php)$", $string) *また今度続きを書きます。