読者です 読者をやめる 読者になる 読者になる

"【正規表現】ある文字が2回連続している文字列にマッチする正規表現"

正規表現

via. https://www.softel.co.jp/blogs/tech/archives/2942

【問題】
ある文字が2回連続している文字列にマッチする正規表現は?

【答え】
後方参照を使う。
「ある文字」をキャプチャして、「その文字がもう1回現れた」を表す。
ある文字は「.」、キャプチャするには括弧「()」で囲み、キャプチャした文字列は「バックスラッシュ+何個目のキャプチャかを示す数字」と書く。
/(.)\1/

キャプチャされた値、同じ正規表現内で使えるの、忘れがち。
"後方参照"というらしい。


<?php
// 微妙にダメな例

if(preg_match("/(.)\1\1/",$str)) {}
?>

ではなくて、

シングルクォーテーションで。…なんでだっけ。\1をアレしたいせいだと思う…多分。

<?php

if(preg_match('/(.)\1\1/',$str)) {}
?>