• ベストアンサー

正規表現の質問

お世話になります。 PHPでの正規表現に関する質問です。 使っている教本の中に、次のようなコードがあります。 $files = new FilesystemIterator('.'); $files = new RegexIterator($files, '/\.(?:txt|csv)$/i'); foreach ($files as $file) { echo $file->getRealPath() . '<br>'; } これは、スクリプトと同じフォルダーにあるファイルの中で、.txt と .csv の拡張子のついたものだけを選択して表示するために、正規表現を使っているのですが、この中の ?: という部分の意味が分かりません。いろいろと正規表現に関する記事をネットで調べてみましたが、: コロンをメタ文字として扱っているものは見たことがありません。この ?: の役割を教えてください。お願いします。 ちなみに、これを取り去ってもちゃんと期待通りの結果が出ます。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

サブパターンを使った際に、マッチング結果が細かく分かれるのを防ぐために使います。 マッチングするかどうかには影響は無く、あくまでもマッチング結果の配列に収められる結果の分かれ方を指定しているモノです。 https://www.php.net/manual/ja/regexp.reference.subpatterns.php

papashiroSooke
質問者

お礼

早速にご回答をいただき、有難うございます。紹介いただいたサイトに行ってみました。あまり正規表現に慣れてないので、結構難しそうなことが書かれているように感じました。でも頑張って読んで理解したいと思います。

関連するQ&A