PHP正規表現における文字クラス内のキャレット記号
ご存知のように、[] 内のキャレットは、
括弧の先頭に書かれた場合、否定を意味します。
したがって、この括弧内では特殊文字となります。
キャレットを文字として扱うには、エスケープするか、
先頭以外の位置に配置する必要があります。
例
次の例での検索パターンは次のとおりです:
最初の文字は 'd' 以外、その後ろに
2つの 'x' 文字。
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[^d]xx#', '!', $str);
?>
結果、変数には以下が格納されます:
'! ! ! dxx'
例
次に、検索パターンは次のとおりです:最初の文字
は 'd' または '^'、その後ろに
2つの 'x' 文字:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[d^]xx#', '!', $str);
?>
結果、変数には以下が格納されます:
'axx bxx ! !'
例
キャレットを先頭から移動させる代わりに、 バックスラッシュでエスケープすることで、 文字そのものを意味するようにすることができます:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[\^d]xx#', '!', $str);
?>
結果、変数には以下が格納されます:
'axx bxx ! !'
実践タスク
次の文字列が与えられています:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
次のパターンにマッチする文字列を見つける 正規表現を書いてください:キャレットまたはアットマーク、 その後ろに2つのラテン文字。
次の文字列が与えられています:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
次のパターンにマッチする文字列を見つける 正規表現を書いてください:キャレットでもアットマークでもなく、 その後ろに2つのラテン文字。
次の文字列が与えられています:
<?php
$str = '^xx axx ^zz bkk';
?>
次のパターンにマッチする文字列を見つける 正規表現を書いてください:キャレット以外、 その後ろに2つのラテン文字。