/foo bar/
#^[^0-9]$#
記号 | 説明 |
---|---|
\ | 多目的に使う一般的なエスケープ文字 |
^ | 検索対象(複数行モードでは行)の始まりを言明 |
$ | 検索対象の終わりあるいは終端の改行文字の前(複数行モードでは行の終わり)を言明 |
. | 改行を除くすべての文字にマッチ(デフォルト時) |
[ | 文字クラス定義の開始 |
] | 文字クラス定義の終了 |
| | 選択枝の開始 |
( | サブパターンの開始 |
) | サブパターンの終了 |
? | ( の意味を拡張/0 または 1 回マッチ/なるべく少ない回数だけマッチ |
* | 0 回以上の繰り返し |
+ | 1 回以上の繰り返し |
{ | 最小/最大を指定する量指定子の開始 |
} | 最小/最大を指定する量指定子の終了 |
記号 | 説明 |
---|---|
\ | 一般的なエスケープ文字 |
^ | クラスの否定。ただし、文字クラスの最初の文字に用いた場合のみ |
- | 文字の範囲の指定 |
記号 | 説明(php.netより引用) |
---|---|
\a | アラーム、ベル文字 (16進 07) |
\cx | “control-x”, ここで x は任意の文字 |
\e | エスケープ文字 (16進 1B) |
\f | 改ページ (formfeed) (16進 0C) |
\n | 改行 (newline) (16進 0A) |
\p{xx} | xx プロパティを持つ文字、詳細は下記のunicodeプロパティを参照 |
\P{xx} | xx プロパティを持たない文字、詳細は下記のunicodeプロパティを参照 |
\r | 復帰 (carriage return) (16進 0D) |
\t | タブ (16進 09) |
\xhh | 16 進コードで hh の文字 |
\ddd | 8 進コードで ddd の文字 |
記号 | 説明(php.netより引用) |
---|---|
\d | 10 進数字 |
\D | 10 進数字でない文字 |
\h | 水平方向の空白文字 (PHP 5.2.4 以降) |
\H | 水平方向の空白文字でない文字 (PHP 5.2.4 以降) |
\s | 空白文字 |
\S | 空白文字でない文字 |
\v | 垂直方向の空白文字 (PHP 5.2.4 以降) |
\V | 垂直方向の空白文字でない文字 (PHP 5.2.4 以降) |
\w | 単語構成文字 (word character) |
\W | 非単語構成文字 (non-word character) |
記号 | 説明(php.netより引用) |
---|---|
\b | 単語境界 |
\B | 非単語境界 |
\A | 検索対象文字列の始端(複数行モードとは独立) |
\Z | 検索対象文字列の終端、または終端の改行(複数行モードとは独立) |
\z | 検索対象文字列の終端(複数行モードとは独立) |
\G | マッチングの開始位置 |
プロパティ | マッチ(php.netより引用) |
---|---|
C | その他 (Other) |
Cc | コントロール文字 (Control) |
Cf | 非可視整形用文字 (Format) |
Cn | 未定義コードポイント (Unassigned) |
Co | 私的利用領域 (Private use) |
Cs | サロゲート (Surrogate) |
L | アルファベット (Letter) |
Ll | 小文字アルファベット (Lower case letter) |
Lm | 擬似文字 (Modifier letter) |
Lo | その他の文字 (Other letter) |
Lt | タイトル文字 (Title case letter) |
Lu | 大文字アルファベット (Upper case letter) |
M | 記号 (Mark) |
Mc | 修飾文字 (Spacing mark) |
Me | 他の文字を囲むための文字 (Enclosing mark) |
Mn | 他の文字を修飾するための文字 (Non-spacing mark) |
N | 数字 (Number) |
Nd | 10 進数字 (Decimal number) |
Nl | 数値を表す文字 (Letter number) |
No | その他の数字 (Other number) |
P | 句読記号 (Punctuation) |
Pc | 連結用句読記号 (Connector punctuation) |
Pd | ダッシュ (Dash punctuation) |
Pe | 閉じ句読記号 (Close punctuation) |
Pf | 末尾句読記号 (Final punctuation) |
Pi | 先頭句読記号 (Initial punctuation) |
Po | その他の句読記号 (Other punctuation) |
Ps | 開き句読記号 (Open punctuation) |
S | 記号 (Symbol) |
Sc | 通貨記号 (Currency symbol) |
Sk | 合わせ文字 (Modifier symbol) |
Sm | 数学記号 (Mathematical symbol) |
So | その他の記号 (Other symbol) |
Z | 区切り文字 (Separator) |
Zl | 行区切り文字 (Line separator) |
Zp | 段落区切り文字 (Paragraph separator) |
Zs | 空白文字 (Space separator) |
修飾子(PCRE内部の名前) | 説明 |
---|---|
i (PCRE_CASELESS) | この修飾子を設定すると、パターンの中の文字は 大文字にも小文字にもマッチします。 |
m (PCRE_MULTILINE) | 行頭メタ文字(^)と行末メタ文字(^)が対象文字列に含まれる改行の前後にもマッチするようにします。 |
s (PCRE_DOTALL) | この修飾子を設定すると、パターン中のドットメタ文字は 改行を含む全ての文字にマッチします。 これを設定しない場合は、改行にはマッチしません。 |
x (PCRE_EXTENDED) | この修飾子を設定すると、エスケープするか 文字クラスの内部を除き、 パターンの空白文字は完全に無視されます。 |
A (PCRE_ANCHORED) | この修飾子を設定すると、パターンは強制的に検索対象文字列の先頭でのみマッチするように制限されます。 |
D (PCRE_DOLLAR_ENDONLY) | この修飾子を設定すると、パターン内のドルメタ文字は、検索対象文字列の 終わりにのみマッチします。この修飾子は、m を設定している場合に無視されます。 |
S | この修飾子を設定すると、追加のパターン分析が 行われます。 |
U (PCRE_UNGREEDY) | この修飾子を設定すると、量指定子の「貪欲さ」が反転します。 つまり、量指定子は、デフォルトで貪欲でなく、 疑問符を後ろに付けてはじめて貪欲になるようになります。 |
X (PCRE_EXTRA) | パターン内で文字が後ろに続くバックスラッシュ で特に意味がないものをエラーにします。 |
J (PCRE_INFO_JCHANGED) | ローカルのオプション PCRE_DUPNAMES の設定を変更します。 サブパターンで重複した名前を使用できるようになります。 |
u (PCRE_UTF8) | パターン文字列は、UTF-8 エンコードされた文字列として処理されます。 |
preg_match([正規表現] , [対象となる文字列]);
<?php preg_match("/uhero/u", "デジタルエージェンシーで必要とされるテクノロジーをuheroは提供します。");
preg_replace([正規表現], [置換する内容], [元の文字列または文字列により構成される配列]);
<?php echo preg_replace("/uhero/u", "株式会社ユヒーロ", "デジタルエージェンシーで必要とされるテクノロジーをuheroは提供します。");
<?php $string = '12-20-2014'; $pattern = '/(\d+)-(\d+)-(\d+)/i'; $replacement = '$3年$1月$2日'; echo preg_replace($pattern, $replacement, $string);
preg_split([正規表現], [分割する文字列]);
<?php $string = 'asdfa5dthdtnr4dt7drbdrb0drbdr1'; $pattern = '/[0-9]+/'; print_r(preg_split($pattern, $string));
Array ( [0] => asdfa [1] => dthdtnr [2] => dt [3] => drbdrb [4] => drbdr [5] => )
PCRE正規表現構文では、メタ文字が多数あります。これらの文字を利用したい場合はバックスラッシュでエスケープすることで使うことが出来ます。 preg_quoteはメタ文字のエスケープを自動的に行うことが出来ます。
preg_quote([エスケープする文字列]);
<?php echo preg_quote("*very*");
\*very\*