文字反復演算子
文字が指定された回数繰り返されることを示したい状況があります。
正確な繰り返し回数がわかっている場合は、単にその回数だけ書けばよいです
- #aaaa#。しかし、1回以上繰り返すと言いたい場合は
どうすればよいでしょうか?
このために、(量指定子)と呼ばれる反復演算子があります:
プラス + (1回以上)、
アスタリスク * (0回以上)、
疑問符 ? (0回または1回)です。
これらの演算子は、その直前にある文字に対して作用します。
例を使ってこれらの演算子の動作を見てみましょう。
例
パターン 文字 'x'、文字 'a' が1回以上、
文字 'x' に一致するすべての部分文字列を検索します:
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
結果、変数には次の内容が書き込まれます:
'xx ! ! ! xbx'
例
パターン 文字 'x'、文字 'a' が0回以上、
文字 'x' に一致するすべての部分文字列を検索します:
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
結果、変数には次の内容が書き込まれます:
'! ! ! ! xbx'
例
パターン 文字 'x'、文字 'a' が0回または1回、
文字 'x' に一致するすべての部分文字列を検索します:
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
結果、変数には次の内容が書き込まれます:
'! ! xaax xbx'
実践問題
次の文字列が与えられます:
<?php
$str = 'aa aba abba abbba abca abea';
?>
パターン:文字 'a'、文字 'b' が1回以上、
文字 'a' に一致する文字列を見つける正規表現を書いてください。
次の文字列が与えられます:
<?php
$str = 'aa aba abba abbba abca abea';
?>
パターン:文字 'a'、文字 'b' が0回以上、
文字 'a' に一致する文字列を見つける正規表現を書いてください。
次の文字列が与えられます:
<?php
$str = 'aa aba abba abbba abca abea';
?>
パターン:文字 'a'、文字 'b' が1回または0回、
文字 'a' に一致する文字列を見つける正規表現を書いてください。
次の文字列が与えられます:
<?php
$str = 'aa aba abba abbba abca abea';
?>
文字列 'aa'、'aba'、'abba'、
'abbba' を見つけ、'abca' と 'abea'
を捕捉しない正規表現を書いてください。