【PHP8.x】INVERT_MATCH定数の使い方

INVERT_MATCH定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『INVERT_MATCH定数は、RegexIteratorクラスの動作モードを制御するために使用されるフラグを表す定数です。RegexIteratorは、配列のような繰り返し処理が可能なデータ(イテレータ)に対して正規表現を適用し、パターンに一致する要素だけを抽出するためのクラスです。通常、RegexIteratorはコンストラクタで指定された正規表現にマッチした要素を返します。しかし、このINVERT_MATCH定数をフラグとして指定すると、その動作が反転します。つまり、正規表現にマッチしなかった要素のみを返すようになります。この機能は、特定のパターンを持つ要素を除外した結果を効率的に得たい場合に非常に有用です。例えば、ログファイルからエラーメッセージが含まれていない行だけを抽出したり、特定の形式に当てはまらないデータだけをフィルタリングしたりする際に活用できます。この定数は、RegexIteratorのインスタンスを生成する際のコンストラクタの第4引数に設定して使用します。』

構文(syntax)

1<?php
2
3$subject = new ArrayObject(['apple', 'banana', 'orange', 'apricot']);
4$iterator = $subject->getIterator();
5
6// '/^a/' にマッチしない要素のみを返すイテレータを作成します。
7$regexIterator = new RegexIterator(
8    $iterator,
9    '/^a/',
10    RegexIterator::MATCH,
11    RegexIterator::INVERT_MATCH
12);
13
14foreach ($regexIterator as $value) {
15    echo $value . PHP_EOL;
16}
17
18?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RegexIterator::INVERT_MATCH は、正規表現にマッチしない要素を抽出するための定数です。この定数は、マッチした要素ではなく、マッチしなかった要素を RegexIterator が返すように指示します。

【PHP8.x】INVERT_MATCH定数の使い方 | いっしー@Webエンジニア