̃Gg[͂ĂȃubN}[Nɒlj

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個以上の連続
③ キャプチャしない丸括弧
④ 大文字小文字を無視する修飾モード



programming/php/regex/no_capture.txt