厳密にはPHPじゃないんだけどね

約1年前に自分にコード書くことにトラウマ植え付けるに至った…は言い過ぎか、ちょっと一悶着あったところで悩んでた正規表現の書き方がやっと解決したのでメモ。

<(?!(a|b|i|u)).*?>(.*?)</(?!(a|b|i|u)).*?>

この例だとa,b,i,u以外の閉じのあるタグに一致。最短一致(non-greedyな一致)で処理しなかった(というかやり方がわからなかった)のと、正規表現で否定書くやり方がわからなかったまま突っ込んで結局使い物にならなかったという。
うわーもう勉強不足すぎて吹き飛べ俺。このくらい調べりゃ出てくるやん。


でこの場合は\2でタグの間に一致させて消せばよい。そうすることで指定したタグ以外使えなくする、ということが可能。