PHP :: 正規表現 / キャプチャしない丸括弧 (?:)

正規表現
(?:)キャプチャしない丸括弧
(?i)大文字小文字を無視する修飾モード
(?-i)大文字小文字を無視しない修飾モード

$str = '<dev align=“center”>Click <a href=“hoge.html”>log-in</A> to enter.</div>';

preg_match('#<a\s+href\s*=\s*(?:“|\')?(.*?)(?:“|\')?>(\w)(?i)</a>#', $str, $matches);

array(3) {
  [0]=>
  string(29) "<a href="hoge.html">login</A>"
  [1]=>
  string(9) "hoge.html"
  [2]=>
  string(5) "login"
}

(?:) を適用した ” と ' (ダブルクォートとシングルクォート)はキャプチャされない

preg_match('#<a\s+href\s*=\s*(?:"|\')?(.*?)(?:"|\')?>(\w)(?i)</a>#', $str, $matches);
               ^^^    ^^^     ^^                           ^^
                ①     ②     ③                           ④

① 半角スペース、タブの1つ以上の連続
② 半角スペース、タブの0個以上の連続
③ キャプチャしない丸括弧
④ 大文字小文字を無視する修飾モード