PHPの角括弧内文字グループ
文字グループ \d, \D, \w,
\W, \s, \S を [] 内で使用すると、
それらは依然としてグループ、つまりコマンドとして機能します。
例
この例では、検索パターンは次のようになります:
xとxの間は、任意の数字、または 'a' から
'f' までの文字:
<?php
$str = 'xax xbx x1x x2x xhx x@x';
$res = preg_replace('#x[\da-f]x#', '!', $str);
?>
結果、変数には次の文字列が格納されます:
'! ! ! ! xhx x@x'
例
この例では、検索パターンは次のようになります:
文字 'x'、次に数字でもピリオドでもなく、
小文字のラテン文字でもない文字、そして文字
'z':
<?php
$str = 'xaz x1z xAz x.z x@z';
$res = preg_replace('#x[^\d.a-z]z#', '!', $str);
?>
結果、変数には次の文字列が格納されます:
'xaz x1z ! x.z !'
実践問題
次のパターンにマッチする文字列を見つける正規表現を書いてください:
数字またはピリオドが 1 回以上。
次のパターンにマッチする文字列を見つける正規表現を書いてください:
数字ではなく、 'a' から 'g' までの文字でもなく、
それが 3 回から 7 回。